Украина, Киев |
Опубликован: 13.07.2010 | Уровень: специалист | Доступ: платный
Самостоятельная работа 28:
Стандартные меню приложений
< Самостоятельная работа 27 || Самостоятельная работа 28: 12345678910 || Самостоятельная работа 29 >
Создание формы с заготовкой меню
Наша главная задача в упражнении 4 - посмотреть способ загрузки пиктограмм в меню из файла ресурсов через список изображений. Для этого мы не будем создавать полнофункциональное окно, а ограничимся лишь окном с заготовкой меню, в которое загружаются пиктограммы. Первые два узла заготовки меню сделаем точно таким же, как в упражнении 3, только создадим их программным способом.
- Добавьте к проекту StripControls форму с именем Form4 командой Project/Add Windows Form
- Поместите из панели Toolbox на форму кнопку Button (или любой другой элемент управления) и сразу удалите ее, чтобы явно прописалось конструктором оболочки свойство Name=Form4 формы в файле Form4.Designer.cs (или сами пропишите его в этом файле)
- Откройте файл Start.cs в режиме View Designer, выделите объект списка listBoxChoice и добавьте в его свойство Items строку: "Упражнение 4."
- Дополните файл Start.cs блоком кода, запускающим созданную форму Form4
// Если форма не запущена - запускаем if (!IsRun) { switch (formName) { case "Form1": frm = new Form1(); break; case "Form2": frm = new Form2(); break; case "Form3": frm = new Form3(); break; case "Form4": frm = new Form4(); break; } this.AddOwnedForm(frm); // Сделать новую frm подчиненной Start // frm.Owner = this; // Алтернативный способ назначить владельца frm.ShowInTaskbar = false; // Не отображать метку окна в панели задач frm.Show(); // Показать новую форму } else frm.Focus(); // Передать фокус запущенной формеЛистинг 28.35. Часть кода обработчика события SelectedIndexChanged, запускающего Form4
- Откройте файл Form4.cs в режиме View Em и добавьте в него функцию CreateMenu() программного создания меню, которая будет иметь следующий код
// Видимые в методах класса поля-ссылки на элементы меню MenuStrip menu; ToolStripMenuItem itemFile; ToolStripMenuItem itemOpen; ToolStripMenuItem itemSaveAs; ToolStripMenuItem itemExit; ToolStripMenuItem itemEdit; ToolStripMenuItem itemCut; ToolStripMenuItem itemCopy; ToolStripMenuItem itemPaste; ToolStripMenuItem itemDelete; void CreateMenu() { // Создание меню menu = new MenuStrip(); menu.Parent = this; // Формирование верхней линейки меню itemFile = new ToolStripMenuItem("&File"); menu.Items.Add(itemFile); itemEdit = new ToolStripMenuItem("&Edit"); menu.Items.Add(itemEdit); // Сборка узла File itemFile.DropDownItems.Add(itemOpen = new ToolStripMenuItem("&Open")); itemFile.DropDownItems.Add(itemSaveAs = new ToolStripMenuItem("Save &As...")); itemFile.DropDownItems.Add(new ToolStripSeparator()); itemFile.DropDownItems.Add(itemExit = new ToolStripMenuItem("E&xit")); // Сборка узла Edit itemEdit.DropDownItems.Add(itemCut = new ToolStripMenuItem("Cu&t")); itemEdit.DropDownItems.Add(itemCopy = new ToolStripMenuItem("&Copy")); itemEdit.DropDownItems.Add(itemPaste = new ToolStripMenuItem("&Paste")); itemEdit.DropDownItems.Add(itemDelete = new ToolStripMenuItem("&Delete")); }Листинг 28.36. Функция CreateMenu() создания меню программным способом
- Добавьте в файл Form4.cs функцию LoadImage() загрузки пиктограмм меню из файла ресурсов через список изображений, которая будет представлена следующим кодом
// Создаем список для хранения изображений ImageList imageList = new ImageList(); void LoadImage() { // Присоединяем ранее сформированные ресурсы из файла ресурсов ResourceReader rr = new ResourceReader("ResXForm4.resources"); IDictionaryEnumerator en = rr.GetEnumerator(); while (en.MoveNext()) { switch (en.Key.ToString()) { default: imageList.Images.Add(en.Key.ToString(), (Image)en.Value); break; case "icoTitle": this.Icon = (Icon)en.Value; // Иконка окна break; case "strTitle": this.Text = (String)en.Value; // Заголовок окна break; } } rr.Close(); // Закрыли файл ресурсов // Определяем цвет, имитирующий прозрачность окраин пиктограмм imageList.TransparentColor = Color.Magenta; // Закрепляем пиктограммы из списка за командами меню с помощью ключей itemOpen.Image = imageList.Images["Open"]; itemSaveAs.Image = imageList.Images["Save"]; itemCut.Image = imageList.Images["Cut"]; itemCopy.Image = imageList.Images["Copy"]; itemPaste.Image = imageList.Images["Paste"]; itemDelete.Image = imageList.Images["Delete"]; }Листинг 28.37. Функция LoadImage() загрузки пиктограмм из файла ресурсов
- Вставьте вызовы функций создания меню и загрузки изображений в конструктор класса Form4 и добавьте инструкции подключения библиотечных пространств имен
Общий код файла Form4.cs будет таким
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace StripControls { using System.Resources; using System.Collections; public partial class Form4 : Form { public Form4() { InitializeComponent(); CreateMenu();// Создаем меню // Загружаем в меню пиктограммы опций LoadImage(); } // Видимые в методах поля-ссылки на элементы меню MenuStrip menu; ToolStripMenuItem itemFile; ToolStripMenuItem itemOpen; ToolStripMenuItem itemSaveAs; ToolStripMenuItem itemExit; ToolStripMenuItem itemEdit; ToolStripMenuItem itemCut; ToolStripMenuItem itemCopy; ToolStripMenuItem itemPaste; ToolStripMenuItem itemDelete; void CreateMenu() { // Создание меню menu = new MenuStrip(); menu.Parent = this; // Формирование верхней линейки меню itemFile = new ToolStripMenuItem("&File"); menu.Items.Add(itemFile); itemEdit = new ToolStripMenuItem("&Edit"); menu.Items.Add(itemEdit); // Сборка узла File itemFile.DropDownItems.Add(itemOpen = new ToolStripMenuItem("&Open")); itemFile.DropDownItems.Add(itemSaveAs = new ToolStripMenuItem("Save &As...")); itemFile.DropDownItems.Add(new ToolStripSeparator()); itemFile.DropDownItems.Add(itemExit = new ToolStripMenuItem("E&xit")); // Сборка узла Edit itemEdit.DropDownItems.Add(itemCut = new ToolStripMenuItem("Cu&t")); itemEdit.DropDownItems.Add(itemCopy = new ToolStripMenuItem("&Copy")); itemEdit.DropDownItems.Add(itemPaste = new ToolStripMenuItem("&Paste")); itemEdit.DropDownItems.Add(itemDelete = new ToolStripMenuItem("&Delete")); } // Создаем список для хранения изображений ImageList imageList = new ImageList(); void LoadImage() { // Присоединяем ранее сформированные ресурсы из файла ресурсов ResourceReader rr = new ResourceReader("ResXForm4.resources"); IDictionaryEnumerator en = rr.GetEnumerator(); while (en.MoveNext()) { switch (en.Key.ToString()) { default: imageList.Images.Add(en.Key.ToString(), (Image)en.Value); break; case "icoTitle": this.Icon = (Icon)en.Value; // Иконка окна break; case "strTitle": this.Text = (String)en.Value; // Заголовок окна break; } } rr.Close(); // Закрыли файл ресурсов // Определяем цвет фона, воспринимаемый прозрачным imageList.TransparentColor = Color.Magenta; // Закрепляем пиктограммы из списка за командами меню с помощью ключей itemOpen.Image = imageList.Images["Open"]; itemSaveAs.Image = imageList.Images["Save"]; itemCut.Image = imageList.Images["Cut"]; itemCopy.Image = imageList.Images["Copy"]; itemPaste.Image = imageList.Images["Paste"]; itemDelete.Image = imageList.Images["Delete"]; } } }Листинг 28.38. Полный код файла Form4.cs
< Самостоятельная работа 27 || Самостоятельная работа 28: 12345678910 || Самостоятельная работа 29 >