Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Контекстное меню (ContextMenu)





 

 
 

Контекстное меню — это меню, которое открывается, когда пользователь щелкает правой кнопкой мыши на каком-либо объекте, расположенном в форме. Контекстное меню, изображенное на рисунке слева, представляет собой меню, которое автор получил, щелкнув правой кнопкой мыши на рабочем столе своего компьютера. Создать контекстное меню можно посредством переноса такого меню в форму и добавления к нему необходимых пунктов — точно так же, как это может быть сделано с управляющим элементом MainMenu. Единственное отличие заключается в том, что в контекстном меню не допускается наличие пунктов самого верхнего уровня.

Рис.6. Возможные действия при создании контекстного меню.

Для того чтобы привязать контекстное меню к какому-либо управляющему элементу в форме, следует выбрать соответствующий управляющий элемент и присвоить его свойству contextMenu указатель на созданное вами контекстное меню.


В результате этих действий главное окно Visual Studio примет вид, показанный на Рис.7.

Рис.7. Результат действий по созданию контекстного меню.

 

1.6. Создание контекстного меню в режиме проектирования

Контекстное меню, дублирующее некоторые действия основного меню, является самым привычным для пользователя, но не самым быстрым способом работы с программой. Например, элемент управления RichTextBox, размещенный на форме, может содержать в себе простейшее контекстное меню, дублирующее действия подменю Edit. Для того чтобы убедиться в этом, достаточно разместить этот элемент управления на форму и запустить приложение (Рис.8):

Рис.8. Контекстное меню элемента TextBox

Добавим к нему элемент контекстного меню contextMenu из окна панели инструментов (ToolBox) на форму, которую назовем "blank". Пункты контекстного меню добавляем точно так же, как мы это делали для главного меню (Рис.4 и 5):

Рис.9. Пункты контекстного меню

Свойство Text и Shortcut пунктов контекстного меню оставляем оставим такими же, как и в главном меню. Если мы установим затем для свойства ShowShortcut значение false, то указанные Вами сочетания клавиш будут работать, но в самом меню отображаться не будут (как на Рис.9). Свойство Name будет формироваться следующим образом: для пункта Cut — "cmnuCut", для Сopy — "cmnuCopy" и т.д.

В обработчике пунктов просто вызываем соответствующие методы:

private void cmnuCut_Click(object sender, System.EventArgs e){ Cut(); }private void cmnuCopy_Click(object sender, System.EventArgs e){ Copy(); }private void cmnuPaste_Click(object sender, System.EventArgs e){ Paste(); }private void cmnuDelete_Click(object sender, System.EventArgs e){ Delete(); }private void cmnuSelectAll_Click(object sender, System.EventArgs e){ SelectAll(); } Реализация указанных функций может быть реализована в классе формы следующим образом:// Вырезание текстаpublic void Cut(){ this.BufferText = richTextBox1.SelectedText; richTextBox1.SelectedText = "";}// Копирование текстаpublic void Copy(){ this.BufferText = richTextBox1.SelectedText;}// Вставкаpublic void Paste(){ richTextBox1.SelectedText = this.BufferText;}// Выделение всего текста — используем свойство SelectAll элемента управления RichTextBox public void SelectAll(){ richTextBox1.SelectAll(); }// Удалениеpublic void Delete(){ richTextBox1.SelectedText = ""; this.BufferText = "";}


Последнее, что нам осталось сделать, — это определить, где будет появляться контекстное меню. Элемент RichTextBox имеет свойство ContextMenu, где мы и указываем contextMenu1, поскольку нам нужно отображать меню именно в текстовом поле. Запускаем приложение — теперь в любой точке текста доступно меню (Рис. 2.10).

Рис. 10. Контекстное меню

 

2. Работа с панелями управления.

2.1. Панель управления с использованием компоненты Panel.

Панель с командными кнопками дополняет меню. Панель устроена проще, поскольку здесь нет иерархии. На панели располагаются кнопки, щелчок по каждой из которых запускает на выполнение соответствующую команду, заданную обработчиком события Click. Как правило, команды, задаваемые кнопками панелей, соответствуют наиболее часто используемым командам меню и являются альтернативным способом их запуска. Но это не обязательно, и команды, задаваемые кнопками панели, могут не пересекаться с командами меню. Роль контейнерного класса для командных кнопок может играть класс, определяющий панель – Panel. Командные кнопки – элементы, располагаемые на панели, задаются классом Button.


Давайте спроектируем панель с тремя кнопками, задающими команды Open, Save и Color, повторяющие команды меню. Принято кнопки делать красивыми, вынося на них рисунки, ассоциированные с командами. Поэтому поместим на форме два элемента управления – ImageList, хранящий рисунки, связываемые с кнопками, и Panel – панель, на которой будут располагаться кнопки. В коллекцию объекта imageList1 добавим три подходящие картинки, свяжем этот объект со свойством ImageList объекта Panel. Затем добавим три кнопки в коллекцию объекта Panel и зададим для них нужные свойства – текст, появляющийся на кнопке, подсказку к кнопке и индекс элемента из списка ImageList. На Рис.11 показан внешний вид панели управления с соответствующими клавишами.

Рис.11. Внешний вид панели с клавишами управления.

Вот как выглядят обработчики события Click команд Open(Открыть), Save(Сохранить) и Color(Цвет):

private void menuItem4_Click(object sender, System.EventArgs e)

{

OpenFileDialog openFileDialog1 = new OpenFileDialog();

openFileDialog1.ShowDialog();

//код, показывающий, что делать с открытым файлом

textBox1.Text = "Открытие Файла!";

}

private void menuItem5_Click(object sender, System.EventArgs e)

{

SaveFileDialog saveFileDialog1 = new SaveFileDialog();

saveFileDialog1.ShowDialog();

//код, анализирующий результат операции сохранения файла

textBox1.Text = "Сохранение Файла!";

}

private void menuItem6_Click(object sender, System.EventArgs e)

{

ColorDialog colorDialog1 = new ColorDialog();

if (colorDialog1.ShowDialog()== DialogResult.OK)

this.textBox1.BackColor =colorDialog1.Color;

}

На Рис.12 показано диалоговое окно для выбора цвета, открытое при выборе команды меню <Color>.

Рис.12. Диалоговое окно ColorDialog, позволяющее выбрать цвет.

Для полноты картины зададим обработчики событий для команд меню Circle, Rectangle, Line, не выполняющие пока содержательной работы, а лишь информирующие о намерениях:

private void menuItem7_Click(object sender, System.EventArgs e)

{

textBox1.Text = "Рисование круга!";

}

private void menuItem8_Click(object sender, System.EventArgs e)

{

textBox1.Text = "Рисование прямоугольника!";

}

private void menuItem9_Click(object sender, System.EventArgs e)

{

textBox1.Text = "Рисование прямой!";

}

Date: 2015-10-19; view: 448; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию