Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

lec

.pdf
Скачиваний:
27
Добавлен:
24.03.2015
Размер:
3.43 Mб
Скачать

черный.Name = "черный";

черный.Size = new System.Drawing.Size (152, 22);

черный.Text = "&Черный";

черный.Click += new System.EventHandler (черный_Click);

// красный

красный.Name = "красный";

красный.Size = new System.Drawing.Size (152, 22);

красный.Text = "&Красный";

красный.Click += new System.EventHandler (красный_Click);

//

//синий

//. . .

//Создаем PopUp-меню ТОЛЩИНА, устанавливаем свойства его пунктов ТОЛЩИНА.DropDownItems.AddRange(new ToolStripItem[ ] { пикселей1,

пикселей2

});

ТОЛЩИНА.Name = "ТОЛЩИНА"; ТОЛЩИНА.Text = "&ТОЛЩИНА";

ТОЛЩИНА.Size = new System.Drawing.Size (82, 20); // пикселей1

пикселей1.Checked = true;

// установить флажок

пикселей1.CheckState = Forms.CheckState.Checked;

// запомнить состояние

пикселей1.Name = "пикселей1";

 

пикселей1.Text = "&1 пиксель";

 

пикселей1.Size = new System.Drawing.Size (154, 22);

 

пикселей1.Click += new System.EventHandler (толщина_Click);

//пикселей2

//. . .

8.Установка и сброс отметки одного пункта меню

Без учета состояния остальных пунктов ниспадающего меню:

this.Пункт1.CheckOnClick = true; // В дизайнере VS

9. Установка и сброс отметки пунктов PopUp-меню

Задача: установить контрольную отметку у выбранного пункта ниспадающего меню, а у взаимоисключающих пунктов аналогичную отметку убрать.

291

рис.10

private void черный_Click (object sender, EventArgs e)

{

color = Color.Black;

MenuItemCheck ("&Черный", ЦВЕТ);

}

private void красный_Click (object sender, EventArgs e)

{

color = Color.Red;

MenuItemCheck ("&Красный", ЦВЕТ);

}

private void синий_Click(object sender, EventArgs e)

{

color = Color.Blue;

MenuItemCheck ("&Синий", ЦВЕТ);

}

private void толщина_Click (object sender, EventArgs e)

{

switch (((ToolStripMenuItem)sender).Text)

{

case "&1 пиксель": width = 1; break;

case "&2 пикселя": width = 2; break;

case "&4 пикселя": width = 4; break;

. . . . . . . .

}

MenuItemCheck (( (ToolStripMenuItem)sender).Text, ТОЛЩИНА);

}

292

//private void MenuItemCheck(ToolStripMenuItem name, ToolStripMenuItem popup)

private void MenuItemCheck ( string text, ToolStripMenuItem popup )

{

foreach (ToolStripMenuItem item in popup.DropDownItems)

{

if ( item.Text != text ) item.Checked = false;

else

item.Checked = true;

}

}

11. Дополнительные возможности

Элементами меню могут быть:

пункты меню типа ToolStripMenuItem, списки ComboBox типа ToolStripComboBox, разделители типа ToolStripSeparator,

управляющие элементы TextBox типа ToolStripTextBox.

Enabled=false

Щелкаем здесь

рис.11

Особенностью элементов ComboBox и TextBox является то, что они не исчезают с экрана после их выборки. Если выбран пункт меню, то меню исчезает.

private System.Windows.Forms.ToolStripMenuItem

toolStripMenuItem1;

private System.Windows.Forms.ToolStripSeparator

toolStripSeparator1;

private System.Windows.Forms.ToolStripTextBox

toolStripTextBox1;

private System.Windows.Forms.ToolStripComboBox

toolStripComboBox1;

293

Создание контекстного меню

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

Ряд элементов управления (TextBox, ComboBox) имеют встроенное контекстное меню.

Пример: элемент управления TextBox содержит в себе простейшее контекстное меню, дублирующее действия подменю Edit.

рис.12

Добавим элемент управления ContextMenuStrip (ContextMenu – VS 2003) из окна ToolBox на форму.

Контекстное меню включает только одну древовидную структуру элементов меню, поэтому оно наследует не класс ToolStrip, а класс

ToolStripDropDownMenu.

public class ContextMenuStrip : ToolStripDropDownMenu

Пункты контекстного меню добавляются точно так же, как и для главного меню. Все, что нужно сделать, — это определить, где будет появляться контекстное меню.

Привязка контекстного меню к ОЭУ

Многие элементы управления имеют свойство ContextMenuStrip, с помощью которого можно прикрепить контекстное меню к элементу.

294

Panel

ContextMenuStrip

рис.13

Местоположение меню определяется свойством LayoutStyle относительно родительского окна.

12. Создание панели инструментов ToolStrip public class ToolStrip : ScrollableControl, IComponent, IDisposable

В графических программах панели инструментов — основное средство работы. Панели инструментов ToolStrip содержат, как правило, наборы кнопок (Button), зачастую дублирующих пункты главного меню.

Перетащим на форму из окна ToolBox компонент ToolStrip.

На кнопках панели обычно располагаются иконки.

Добавить

объект

рис.14

295

Создание рисунков (иконок).

Щелкаем правой кнопкой на проекте, далее выбираем: Add / New Item... / Icon File

Запустится графический редактор со своим главным меню. Редактор создает две иконки – 16х16 и 32х32 пикселей. Во избежание путаницы рекомендуется иконку 16х16 удалить.

Для этого в меню Image сначала удаляемую иконку делаем текущей: Image / Current Icon Image Type / 16x16, 16 colors

а затем ее удаляем: Image / Delete Image Type.

Создаем рисунок первого инструмента. Остальные инструменты создаем так же.

Добавление инструмента на панель

Добавить объект на панель инструментов можно двумя способами: с помощью щелчка на стрелке списка Add ToolStripButton в строке инструментов или через свойство Items, создающее коллекцию инструментов.

1-ый способ.

рис.15

Контекстное меню любой кнопки панели инструментов позволяет с помощью пункта Set Image... открыть окно Select resource и импортировать рисунок из файла.

296

рис.16

2-ой способ. Щелкаем на кнопке ... свойства Items. Появляется редактор коллекции.

Добавить

объект

рис.17

1.Для каждого добавляемого инструмента изменяем его свойства

Text и Name.

2.Используя свойство Image … инструмента, открываем окно Select resource (см. выше) и импортируем иконку из созданного файла.

297

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

private void toolStripЦвет_Click (object sender, EventArgs e)

{

// ColorDialog colorDialog1 = new ColorDialog(); // Создать окно

colorDialog1.Color = color;

// текущий цвет в рамке

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

color = colorDialog1.Color;

// новый цвет

}

private void toolStripПлюс_Click (object sender, EventArgs e)

{

width += 2;

}

private void toolStripМинус_Click (object sender, EventArgs e)

{

if (width == 1) return; width -= 2;

}

private void Form1_MouseMove (object sender, MouseEventArgs e)

{

int y = menuStrip1.Size.Height + toolStrip1.Size.Height;

if ( leftDown == true )

{

Graphics g = this.CreateGraphics();

 

if ( toolStripГрад.Checked == true )

 

{

 

Pen pen2 = new Pen(Color.FromArgb(255, c, c), width);

//белый – красный

// Pen pen2 = new Pen(Color.FromArgb(c, 0, 0), width);

//красный – черный

g.DrawLine (pen2, 0, y, e.X, e.Y);

 

if (c < 20)

 

c = 255;

 

else

 

c = c – h;

 

}

 

else

 

g.DrawLine(pen, 0, y, e.X, e.Y);

 

}

 

}

Реализация на уровне исходного текста программы

1.Создается контейнер типа ToolStrip.

2.Создаются кнопки-инструменты.

298

3.С помощью свойства контейнера Items получаем коллекцию элементов.

4.Используя метод коллекции AddRange(), добавляем в коллекцию ссылки на кнопки-инструменты.

Следует заметить, что все инструменты панели, как и пункты меню, наследуют абстрактный класс ToolStripItem:

public class ToolStripButton : ToolStripItem

ToolStrip toolStrip1 = new ToolStrip();

ToolStripButton toolStripЦвет

= new ToolStripButton();

ToolStripButton toolStripПлюс

= new ToolStripButton();

ToolStripButton toolStripМинус = new ToolStripButton();

ToolStripButton toolStripГрад = new ToolStripButton();

// toolStrip1

//

toolStrip1.Items.AddRange(new ToolStripItem[ ] { toolStripЦвет, toolStripПлюс, toolStripМинус, toolStripГрад });

toolStrip1.Name = «toolStrip1»; toolStrip1.Text = «ToolStrip1»;

toolStrip1.Location = new System.Drawing.Point(0, 24); toolStrip1.Size = new System.Drawing.Size(707, 25); toolStrip1.TabIndex = 1;

//toolStripЦвет

toolStripЦвет.Name = «toolStripЦвет»; toolStripЦвет.Text = «ToolStripЦвет»;

toolStripЦвет.DisplayStyle = ToolStripItemDisplayStyle.Image; toolStripЦвет.Image =

((System.Drawing.Image)(resources.GetObject(«toolStripЦвет.Image»))); toolStripЦвет.ImageTransparentColor = System.Drawing.Color.Magenta; toolStripЦвет.Size = new System.Drawing.Size(23, 22);

toolStripЦвет.Click += new System.EventHandler(toolStripButton1_Click);

//toolStripПлюс

//

. . .

// toolStripГрад

//

toolStripГрад.CheckOnClick = true;

. . .

13.Создание набора вкладок. Элемент управления TabControl.

ВVS-2005 этот элемент управления изменен.

Контейнер TabControl содержит коллекцию страниц типа TabPage. Коллекция имеет тип Controls.

299

К коллекции страниц (вкладок) можно получить доступ и через свойство TabPages, которое доступно в окне свойств дизайнера. Каждая страница имеет закладку, текст которой определяется свойством Text.

Существует два способа добавления страниц в дизайнере.

1-ый способ. Используя управляющую кнопку элемента.

рис.18

Список закладок в одну строку:

1

рис.19

300

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]