Программирование >>  Автоматически обновляемые приложения 

1 ... 60 61 62 [ 63 ] 64 65 66 ... 170


нщ$пщмещЦ вызывающего контекстное меню

private void contextMenuStripl Opening(object sender, CancelEventArgs e) {

if (contextMenuStripl.SourceControl == labell)

Фон ДЛЯ меню

Если вы решили использовать элемент Menustrip, то увидите, что его фон имеет синий цвет, схожий с цветовой схемой, используемой в пакете Microsoft Office 2007. Свойство BackColor при ЭТОМ ИМеет значение Control, что может смутить разработчика, который привык, что фон меню обычно совпадает с фоном формы. Исправить эту ситуацию очень просто. Нужно указать другой способ отрисовки элемента при помощи свойства RenderMode. Установите в этом свойстве значение System, и фон вашего меню будет совпадать с фоном формы. Этот же способ работает и для элемента Tooistrip.

Как добавить контекстное меню элементу управления?

Добавить контекстное меню элементу управления очень просто, но многие программисты даже не догадываются об этой возможности. Для этого сначала нужно добавить на форму элемент ContextMenuStrip, а затем просто установить свойство ContextMenuStrip у вашего элемента управления. Например, таким образом можно создать контекстное меню для кнопки (хотя и трудно представить ситуацию, когда кнопке необходимо контекстное меню).

Как определить, какой элемент вызвал контекстное меню?

Если вы сопоставили контекстное меню ContextMenuStrip сразу нескольким элементам, то можно определить, какой именно элемент вызвал контекстное

меню при помощи свойства ContextMenu. SourceControl. Это бывает ПОЛеЗ-

ным, если ваше меню должно отличаться для разных элементов. Пример показан в листинге 6.56.



истинг 6.57. Автоматическое закрытие контекстного меню

private void timerMenu Tick(object sender, EventArgs e) {

SendKeys.Send( {ESC} ); timerMenu.Stop();

private void contextMenuStripl Opened(object sender, EventArgs e) {

set interval to 5 seconds timerMenu.Interval = 5000; timerMenu.Start() ;

Обратите внимание, что в последних двух примерах мы использовали новые события Opening И Opened, которые ПОЯВИЛИСЬ В .NET Framework 2.0. Для устаревшего элемента ContexMenu можно использовать событие Popup.

Примечание

Примеры работы с меню находятся в папке MenuDemo на прилагаемом диске.

cmenuOpen.Text = Label ;

else

cmenuOpen.Text = Button ;

Автоматическое закрытие контекстного меню через заданный промежуток времени

Достаточно просто обеспечить автоматическое закрытие контекстного меню через заданный промежуток времени при помощи нажатия на клавишу <Esc> программным способом. Для этого нужно добавить в проект таймер, который и будет посылать команду клавише <Esc>, и написать соответствующий код для события Opened. Код приведен в листинге 6.57.



: Листинг 6.58. Показ подсказки над узлом TreeView

private void Forml Load(object sender, EventArgs e) {

Create a root node.

TreeNode rootNode = treeViewl.Nodes.Add( Коты ) ;

TreeNode childNode = rootNode.Nodes.Add( Барсик ); childNode.Tag = Барсик - большой и умный кот ;

childNode = rootNode.Nodes.Add( Рыжик ); childNode.Tag = Рыжик - очень любопытный кот ;

chiIdNode = rootNode.Nodes.Add( Мурзик ); childNode.Tag = Мурзик - ленивый кот ;

childNode = rootNode.Nodes.Add( Пушок ); childNode.Tag = Пушок - белый и пушистый кот ;

Раскрываем все узлы дерева rootNode.ExpandAll();

private void treeViewl MouseMove(object sender, MouseEventArgs e) {

Получим узел в текущей позиции мыши

TreeNode theNode = this.treeViewl.GetNodeAt(е.X, e.Y);

Установим ToolTip, только если мышь задержалась на узле if ((theNode != null))

Дерево {TreeView)

Как показать подсказку над узлом TreeView?

Даже если вы будете использовать элемент ToolTip в TreeView, вы не сможете показать всплывающую подсказку над конкретным узлом дерева TreeView. Здесь требуется обходной маневр, описанный в Базе Знаний Microsoft (http: support.microsoft.com/kb/322634). Предлагаю вашему вниманию чуточку измененный вариант примера из этой статьи (листинг 6.58). Результат показан на рис. 6.9.



1 ... 60 61 62 [ 63 ] 64 65 66 ... 170

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика