Главная » C#, Компоненты » Добавление специальной области в редактор формы

0

Сервис iSpiitwindowService позволяет добавить в редактор формы дополнительную область, похожую на ту, в которой располагаются невизуальные компоненты. Следует учитывать, что этот сервис недокументирован и, кроме того, является внутренним (internal). Пользоваться им следует с большой осторожностью!

Описание интерфейса этого сервиса выглядит следующим образом:

internal interface ISpiitwindowService

f

void AddSplitWindow(Control window}; void RemoveSplitWindow(Control window);

Код добавления, специальной области очеиь простой:

private object slitControl;

public override ISite Site {

get

f

return base.Site;

}

set

{

base. Site = valuer-

Type splitType = Type.GetType("System.Windows.Forms.

Design.ISplitWindowService,System.Design"); object split = GetService(splitType);

if (value .’= null)

f

Label label = new Label(); label.Text = "Метка в split-окне"; slitControl = label;

Methodlnfo mi ?= splitType.GetMethod("AddSplitWindow",

BindingFlags.Instance I BindingFlags.Public); mi.Invoke(split, new object[] ( slitControl ));

}

else (

Methodlnfo mi = splitType.GetMethod("RemoveSplitWindow",

BindingFlags.Instance | BindingFlags.Public); mi.Invoke(split, new object[] ( slitControl ));

}

t

1

Как я уже сказал, сервис является внутренним, поэтому приходится обращаться к иему с помощью методов отражения. В моем коде в дополнительную область добавляется компонент типа Label с некоторым текстом (рис. 7.13). Вообще говоря, можно добавить в нее любой визуальный компонент.

Рис. 7.13. Дополнительное окно с информацией

Еще раз напоминаю, что сервис недокументирован, хотя и используется самой средой Visual Studio.

Литература:

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

По теме:

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