Главная » C#, Компоненты » Создание диалоговых окон в режиме разработки

0

Сервис iuiService позволяет создавать диалоговые окна в режиме разработки:

П методы void ShowMessage (string message), void ShowMessage {string message, string caption) И DialogResult ShowMessage(string message, string caption, MessageBoxButtons buttons) отображают диалоговое сообщение, как на рис. 7.9. Последний метод позволяет управлять количеством кнопок диалога;

П методы void ShowError(Exception ex), void ShowError(string message) И void ShowError (Exception ex, string message) отображают сообщение об ошибке, как на рис. 7.10. Сообщение об ошибке может задаваться либо просто строкой, либо с помощью передачи исключения;

П метод DialogResult ShowDialog {Form form) отображает форму В режиме дизайнера.

Рис. 7.9. Диалоговое окно стремя кнопками

Перечисление MessageBoxButtons позволяет задавать следующие конфигурации кнопок, состав которых легко угадать из названий: ок, OKCancel, AbortRetrylgnore, YesNoCancel, YesNo, RetryCancel.

Кстати, параметр caption вовсе не задает Заголовок окна, как можно было подумать. Он задает значение первой строки диалога (см. рис. 7.9).

Метод ShowDialogO выводит пользовательскую форму в режиме дизайнера. Стандартный код, отображающий форму в обоих режимах, выглядит примерно так:

// Пытаемся получить интерфейс сервиса IUIService uiService —

this.GetService(typeof(IUIService)) as IUIService;

using (MyForm dig = new MyFormO)

{

// Будет хранить результат диалога DialogResult dlgResult = DialogResult.OK;

// Если сервис существует, значит, мы в режиме разработки. // Используем сервис для отображения диалога, if (uiService != null)

dlgResult = uiService.ShowDialog(dig); else

// Мы в режиме выполнения. // Просто показываем диалог. dlgResult = dig.ShowDialog!);

if (dlgResult = DialogResult.OK)

}

1

}

Рис. 7.10. Сообщение об ошибке

В листинге 7.19 представлен небольшой пример, демонстрирующий использование сервиса IUIService. Контекстное меню компонента iuiserviceExampieControi содержит три пункта, позволяющие показать сообщение с тремя кнопками (см. рис. 7.9), сообщение об ошибке (см. рис. 7.10) и форму ExampieForm (рис. 7.1 ]). Код самой формы я не привожу, т. к. это просто произвольная форма. Интересующиеся могут найти полный код на компакт-диске.

Листинг 7 19 Диалоговые окна ы режиме разработки

using System;

using System.ComponentModel;

using System.ComponentModel.Design;

using System.Drawing;

using System.Windows.Forms;

using System.Windows.Forms.Design;

namespace MyControl t

// Компонент, использующий дизайнер iUlServiceTestDesigner [DesignerAttribute(typeof(IUlServiceTestDesigner),

typeof jlDesigner))] public class lUIServiceExampleControl : UserControl t

public lUIServiceExampleControl() t

this.BackColor = Color.Beige; this.Width = 255; this.Height = 60;

}

)

// Дизайнер показывает работу сервиса IUIService // с помощью команд контекстного меню

public class IUlServiceTestDesigner : ControlDesigner t

public IUlServiceTestDesigner()

t }

// Контекстное меню для демонстрации // возможностей сервиса IUIService public override DesignerVerbCollection Verbs t

get

{

DesignerVerbCollection coll = new DesignerVerbCollection!);

coll.Add(new DesignerVerb(

"Тестовое сообщение в окне с тремя кнопками", new EventHandler(this.ShowTestMessage))); coll.Add(new DesignerVerb( "Сообщение об ошибке", new EventHandler(this.ShowErrorMessage))); coll.Add(new DesignerVerb( "Отображение формы", new EventHandler(this.ShowDialog))); return coll;

}

}

// Показывает сообщение в окне с тремя кнопками

// Abort, Retry, Ignore

private void ShowTestMessage(object sender, EventArgs e)

{

IUIService service = (IUIService)this.GetService( typeof(IUIService));

if (service != null)

service.ShowMessage("Test message", "Test caption", MessageBoxButtons.AbortRetryignore);

}

// Показывает окно сообщения об ошибке

private void ShowErrorMessage(object sender, EventArgs e)

{

IUIService service = (IUIService)this.GetService( typeof(IUIService));

if (service != null)

service.ShowError(new Exception("Ошибка!"));

}

// Показывает форму ExampleForm

private void ShowDialog(object sender, EventArgs e)

{

IUIService service = (IUIService)this.GetService( typeof(IUIService));

if (service != null)

service. ShowDialog (new ExampleFormO ) ;

Рис. 7.11. Вывод формы

Литература:

Агуров П. В. C#. Разработка компонентов в MS Visual Studio 2005/2008. – СПб.: БХВ-Петербург, 2008. — 480 е.: ил.

По теме:

  • Комментарии