Опубликован: 13.07.2010 | Доступ: свободный | Студентов: 890 / 20 | Оценка: 4.40 / 4.20 | Длительность: 77:34:00
Тема: Программирование
Специальности: Программист, Архитектор программного обеспечения
Самостоятельная работа 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 >


