Страница 2 из 2
StiViewerControl на вкладках
Добавлено: 30 май 2012, 08:30
Леонид
Подскажите, пожалуйста ещё одну вещь. Никак не могу понять, почему, когда я в коде пишу:
Код: Выделить всё
StiOptions.Engine.GlobalEvents.ClosingDesigner += new CancelEventHandler(GlobalEvents_ClosingDesigner);
...
private void GlobalEvents_ClosingDesigner(object sender, CancelEventArgs e)
{
e.Cancel = true;
}
То событие срабатывает, но у меня закрывается почему-то вся форма, хотя метод .Close() я не вызываю при этом.
И ещё не понятен момент (взял я его из вашего примера DesignerManagement):
Код: Выделить всё
Stimulsoft.Report.Design.Toolbars.StiStandardToolbarService standardToolbar = Stimulsoft.Report.Design.Toolbars.StiStandardToolbarService.GetService(stiDesigner);
standardToolbar.ShowClose = false; // <- почему кнопка не скрывается, ни в классическом, ни в ribbon GUI?
StiViewerControl на вкладках
Добавлено: 31 май 2012, 09:29
Aleksey
Здравствуйте,
Пожалуйста, пришлите простой пример, который воспроизводит проблему для анализа.
Спасибо.
StiViewerControl на вкладках
Добавлено: 31 май 2012, 11:10
Леонид
Набросал примитивный пример (во вложении).
Суть такая: есть форма (SDI, не MDI), на ней куча вкладок (для примера только две) - на первой кнопка, нажав на которую будет создан designer control на второй вкладке, при нажатии кнопки Close, да, событие работает, теперь я понял почему - потому что эта кнопка вызывает FormClosing event, а зачем, когда у меня вкладки?
StiViewerControl на вкладках
Добавлено: 04 июн 2012, 12:37
Anton Lozovskiy
Здравствуйте,
При нажатии в дизайнере на кнопку Exit, мы ищем родительскую форму, и вызываем у нее метод Close() (это логично, т.к. дизайнер - это контрол и если вы не спрятали данную кнопку из кода, и нажали на нее, нужно закрыть текущее окно). Далее при закрытии дизайнера срабатывает событие StiOptions.Engine.GlobalEvents.ClosingDesigner, которое дает возможность обработать и отменить закрытие формы (у вас выполняется код: e.Cancel = true;). Далее конечно у вас срабатывает событие Form1_FormClosing по цепочке, но значение e.Cancel у него уже равно true. Соответственно форма не закроется. Следовательно вы можете написать следующий код:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.Cancel)
MessageBox.Show("Why this event is being called now?");
}
Спасибо.
StiViewerControl на вкладках
Добавлено: 04 июн 2012, 12:52
Леонид
Да, с закрытием-то формы мне понятно, но почему не работает код, скрывающий эту кнопку Close?
Разве этого кода недостаточно:
Код: Выделить всё
Stimulsoft.Report.Design.Toolbars.StiStandardToolbarService standardToolbar = Stimulsoft.Report.Design.Toolbars.StiStandardToolbarService.GetService(stiDesigner);
standardToolbar.ShowClose = false; // hide close button
StiViewerControl на вкладках
Добавлено: 05 июн 2012, 06:01
Aleksey
Здравствуйте,
Пожалуйста, попробуйте использовать данный код до объявления StiDesignerControl-а
Код: Выделить всё
Stimulsoft.Report.Design.Toolbars.StiStandardToolbarService standardToolbar = Stimulsoft.Report.Design.Toolbars.StiStandardToolbarService.GetService();
standardToolbar.ShowClose = false; // hide close button
StiOptions.Designer.MainMenu.ShowFileExit = false;
StiDesignerControl stiDesigner = new StiDesignerControl(stiReport);
stiDesigner.Dock = DockStyle.Fill;
Спасибо.
StiViewerControl на вкладках
Добавлено: 05 июн 2012, 08:39
Леонид
Ура! Всё заработало :biggrin:
Да, я понял, что код:
Код: Выделить всё
Stimulsoft.Report.Design.Toolbars.StiStandardToolbarService standardToolbar = Stimulsoft.Report.Design.Toolbars.StiStandardToolbarService.GetService();
standardToolbar.ShowClose = false; // hide close button
StiOptions.Designer.MainMenu.ShowFileExit = false;
нужно было выполнить перед созданием дизайнера.
Спасибо!
StiViewerControl на вкладках
Добавлено: 06 июн 2012, 05:54
Andrew
Здравствуйте,
Отлично.
Удачного Вам дня.