Здравствуйте.
Захотелось мне использовать свой диалог в ситуации, когда пытаемся закрыть изменённый отчёт.
Порылся в исходниках сборки 2008.2.300 и сделал как мне надо, но ведь не сложно предоставить такую возможность изначально?
Некий метод, возвращающий DialogResult, который мог-бы перекрыть разработчик (или событие на эту тему).
Заранее спасибо.
Позвольте перекрыть диалог "отчёт изменён, сохранить? да-нет-отмена"
Позвольте перекрыть диалог "отчёт изменён, сохранить? да-нет-отмена"
Вы можете использовать свой диалог сохранения в событии ClosingDesigner.
StiOptions.Engine.GlobalEvents.ClosingDesigner
К примеру, так:
Спасибо.
StiOptions.Engine.GlobalEvents.ClosingDesigner
К примеру, так:
Код: Выделить всё
StiOptions.Engine.GlobalEvents.ClosingDesigner += new CancelEventHandler(GlobalEvents_ClosingDesigner);
void GlobalEvents_ClosingDesigner(object sender, CancelEventArgs e)
{
if (MessageBox.Show("Close?", "ClosingEvent", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1) != DialogResult.OK)
e.Cancel = true;
else
{
// чтобы не появилось сообщение:
(sender as Stimulsoft.Report.Design.StiDesignerControl).Report.IsModified = false;
}
}
Позвольте перекрыть диалог "отчёт изменён, сохранить? да-нет-отмена"
спасибо, я с этим вариантом экспериментировал, но как-то не догадался, что можно IsModified самому сбросить...
примерно такой код работает как мне надо:
НО! Это работает на закрытии дизайнера, тут хоть как-то опередить штатный диалог можно,
а как его подавить на этапе, когда при несохранённом текущем отчёте
пользователь пытается открыть (Open) или создать новый (New)?
там вроде как без вариантов работает StiDesignerControl.TestReportSave(),
а хотелось-бы иметь возможность и здесь подсунуть свой диалог...
примерно такой код работает как мне надо:
Код: Выделить всё
void GlobalEvents_ClosingDesigner(object sender, CancelEventArgs e)
{
Stimulsoft.Report.StiReport report = (sender as Stimulsoft.Report.Design.StiDesignerControl).Report;
if ((report != null) && report.IsModified)
{
DialogResult res = MessageBox.Show("Save changes?", "ClosingEvent", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Asterisk);
if (res == DialogResult.Cancel)
e.Cancel = true;
else
{
if (res == DialogResult.Yes)
{
MessageBox.Show("DoSave");
}
// чтобы не появилось сообщение:
report.IsModified = false;
}
}
}
а как его подавить на этапе, когда при несохранённом текущем отчёте
пользователь пытается открыть (Open) или создать новый (New)?
там вроде как без вариантов работает StiDesignerControl.TestReportSave(),
а хотелось-бы иметь возможность и здесь подсунуть свой диалог...
Позвольте перекрыть диалог "отчёт изменён, сохранить? да-нет-отмена"
Здравствуйте,
Задача ясна, будем разбираться, о результатах сообщим в этом топике.
Спасибо.
Задача ясна, будем разбираться, о результатах сообщим в этом топике.
Спасибо.
Позвольте перекрыть диалог "отчёт изменён, сохранить? да-нет-отмена"
Здравствуйте,
Добавлено глобальное событие - StiOptions.Engine.GlobalEvents.SaveChangesInDialogBoxDesigner.
Проверьте билд от 9 марта.
Спасибо.
Добавлено глобальное событие - StiOptions.Engine.GlobalEvents.SaveChangesInDialogBoxDesigner.
Проверьте билд от 9 марта.
Спасибо.