Воскресенье, 28.04.2024, 13:14
Приветствую Вас Гость | RSS

Лекции

Меню сайта
Форма входа
Категории раздела
ТАУ (Теория автоматического управления) [31]
лекции по ТАУ
Экология [151]
учебник
Бухгалтерский учет и налогообложение в строительстве [56]
Дементьев А.Ю. - Практическое пособие
Психология [104]
Пип
информатика [80]
с# Карли Ватсон
современные стулья [0]
новинки
Поиск

Главная » 2010 » Февраль » 11 » Панели инструментов
00:32
Панели инструментов
Панели инструментов
Хотя меню прекрасно справляются с задачей предоставления доступа ко всему
многообразию функциональных возможностей приложения, размещение некоторых
пунктов не только в меню, но и на панели инструментов, может дать некоторые
выгоды. Это оказывается справедливым для пунктов меню, используемых пользо-
вателем наиболее часто, например, Open и Save. Панель ведет к отдельным функ-
циональным возможностям приложения посредством одного щелчка мышью, что,
вне всякого сомнения, требует меньших усилий, чем при работе с меню — поль-
зователю намного легче щелкать мышью на постоянно видимой кнопке, чем осу-
ществлять поиск по иерархии различных меню.
Изображение экрана, приведенное ниже, демонстрирует набор линеек инстру-
ментов, которые видны автору в процессе написания этой главы в MS Word:
• ц 100%
mentText * BaskerviPe BE Regu v ID - 5 В / -ЯГ.
& : Л
Кнопки, расположенные на панели инструментов, обычно содержат рисунок без
текста, хотя и существует возможность использовать кнопки, на которых будет
изображено и то, и другое. В качестве панели с кнопками без текста можно приве-
сти панели в MS Word (как на рисунке), а в качестве примера панелей с текстом —
используемые в MS Internet Explorer. Если вы наведете курсор мыши на какую-
либо кнопку и остановите его, то будет выведено некоторое пояснение относитель-
но предназначения данной кнопки, особенно в тех случаях, когда на ней имеется
только изображение и отсутствует какой-либо текст.
Дополнительные возможности Windows Form 357
В отличие от управляющих элементов типа "меню", управляющий элемент
Toolbar не является просто контейнером для других объектов. Можно задать непо-
средственно некоторые его свойства, например, координаты его расположения на
экране. Все кнопки на панели инструментов являются полноправными объектами.
Каждая кнопка элемента Toolbar представляет собой объект TooibarButton, в ко-
тором содержится информация о том, какой должен выводиться рисунок, каков
стиль текста, который выводится/не выводится вместе с рисунком, а также неко-
торые другие пояснения.
Сначала опишем свойства и события управляющего элемента Toolbar, а затем
перейдем К Обсуждению TooibarButton.
Свойства управляющего элемента Toolbar
Свойства элемента Toolbar позволяют управлять тем, как и где этот элемент
будет выводиться на экран. Они также регулируют некоторые установки, касаю-
щиеся вывода кнопок управляющего элемента на экран; такие установки являются
едиными для всех кнопок, содержащихся на данной панели:
Имя Режим доступа Описание
Appearance
AutoSize
Buttons
ButtonSize
Divider
DropDownArrows
ImageList
ShowToolTips
Wrappable
Чтение/запись Управляет внешним видом всех кнопок, содержащихся
в данном элементе. Оно может принимать значения либо
Flat (плоский), либо Normal (нормальный). Установка,
имеющая значение Normal означает, что вокруг кнопки
будет нарисована объемная граница.
Чтение/запись Присваивание этому свойству значения f a l s e позволяет
изменять размеры управляющего элемента. При значении
по умолчанию t r u e элемент самостоятельно определяет
собственные размеры с тем, чтобы было достаточно места
для вывода рисунков и текста.
Только чтение Возвращает семейство кнопок, содержащихся
в данном элементе.
Чтение/запись Позволяет изменять размеры самих кнопок.
Если свойство AutoSize имеет значение, равное true,
то данное свойство игнорируется.
Чтение/запись Если этому свойству присвоено значение t r u e , то будет
выведена верхняя граница управляющего элемента Toolbar.
Чтение/запись Если в управляющем элементе имеются кнопки, которые
представляют раскрывающиеся меню, то это свойство
позволяет определить, будет ли стрелка, предназначенная
для раскрытия этого меню, рисоваться с правой стороны.
Чтение/запись Список рисунков, в котором хранятся рисунки, используемые
кнопками данного управляющего элемента.
Чтение/запись Присваивание этому свойству значения t r u e приведет
к выводу пояснений для всех кнопок, содержащихся
в данном управляющем элементе.
Чтение/запись Если это свойство имеет значение true, а длина панели
инструментов слишком велика для того, чтобы все входящие
в нее кнопки могли быть выведены на одной строке,
то она будет перенесена на следующую строку.
358 Глава 14
Имя
События управляющего элемента Toolbar
В классе Toolbar существуют два события, не являющиеся производными от
класса control. Они генерируются, когда происходит щелчок мышью на кнопке
или на стрелке, предназначенной для раскрытия меню. Единственный обработчик
событий должен справляться с нажатиями всех возможных кнопок на панели,
поэтому он должен быть способным различать нажатие одной кнопки от нажатия
другой:
Описание
ButtonClick Происходит при нажатии любой кнопки, входящей в состав панели инструментов.
Для того чтобы определить, какая именно кнопка была нажата, следует
воспользоваться свойством Button параметра ToolbarButtonClickEventArgs,
который передается обработчику событий. С помощью этого свойства можно
определять действия, которые необходимо предпринять.
ButtonDropDown Наступает, если кнопке панели инструментов вместе со ее свойством style
присваивается значение DropDownButton или если происходит щелчок мышью
на соответствующей стрелке. В этом случае также возможно использовать
ToolbarButtonClickEventArgs для определения того, какая именно кнопка
нажата и, следовательно, какие действия требуется предпринять.
Свойства класса ToolbarButton
Класс ToolbarButton определяет отдельные установки для каждой кнопки пане-
ли инструментов, включая рисунок, стиль, текст и пояснение по использованию
данного инструмента. Интересная особенность ToolbarButton заключается в том,
что если стиль имеет значение DropDownButton, то этот класс может содержать
меню (Menuitem), в котором содержатся пункты, подлежащие выводу:
Имя Режим доступа Описание
DropDownMenu
Enabled
Imagelndex
PartialPush
Pushed
Чтение/запись Дает возможность присваивать Menuitem данной кнопке.
Если свойство Style этой кнопки имеет значение
DropDownButton (см. ниже), то при нажатии данной кнопки
будет выводиться Menuitem.
Чтение/запись Установив значение этого свойства false, можно сделать
данную кнопку недоступной для пользователя. Не забудьте,
что в этом случае при использовании для кнопки растровых
изображений рисунки можно выводить только в монохромном
изображении.
Чтение/запись Индекс рисунка, который следует использовать.
Список рисунков привязывается к управляющему
элементу Toolbar.
Чтение/запись Может использоваться, если стиль данной кнопки определен
как ToggleButton. Если присвоить этому свойству значение
true, то кнопка будет выводиться серым цветом. В отличие
от случая, когда свойству Enabled присваивается значение
false, эта установка приводит к тому, что вся поверхность
кнопки становится нечеткой.
Чтение/запись Если стиль ToolbarButton имеет значение ToggleButton,
то присвоив этому свойству значение true, можно
добиться того, что кнопка будет выводиться нажатой.
Дополнительные возможности Windows Form 359
Продолжение таблицы
Имя Режим доступа Описание
Style
Text
ToolTipText
Чтение/запись Можно использовать четыре различных стиля:
• PushButton: Кнопка выводится в нормальном виде.
• ToggleButton: Кнопка данного стиля может быть нажата
и будет оставаться в таком положении до тех пор, пока
не будет нажата еще раз. Пример такой кнопки — кнопка
Bold, использующаяся в панелях инструментов MS Word.
• Separator: Кнопка данного стиля вообще не выводится;
она создает небольшое пространство между кнопками.
• DropDownButton: Кнопке с таким стилем может быть
присвоено Menu i t em. Если в нем содержатся подпункты,
они будут использоваться для создания меню, которое
будет раскрываться при нажатии на данную кнопку.
Чтение/запись Текст, который должен выводиться на кнопке, находящейся
на панели инструментов.
Чтение/запись Текст пояснения для данной кнопки.
Практикум: пример использования панели инструментов
Мы расширим тот пример, который использовался при обсуждении меню, за
счет включения в него панели инструментов. Эта простая панель инструментов
будет содержать три кнопки, каждая из которых соответствует одному пункту кон-
текстного меню — выделение жирным шрифтом, курсивом и подчеркиванием. Мы
включим туда четвертую кнопку с раскрывающимся меню, с помощью которой
можно выбирать шрифт.
Автору не удалось найти растровый файл для кнопки Font
среди графических файлов, инсталлированных в Visual Studio.NET.
Вы можете использовать для этой цели произвольный
графический файл, либо скачать текст этой книги, который
находится на www.wrox.com и в котором можно найти файл,
использованный автором.
Начнем с того, что внесем следующие изменения в код MenuExampie, который
мы создали в начале главы:
1. Поскольку мы собираемся добавлять панель инструментов,
необходимо изменить свойство Dock управляющего элемента
RichTextbox на None, а ВМеСТО него ПРИСВОИТЬ СВОЙСТВУ Anchor
значение Left, тор, Right, Bottom.
2. Добавьте управляющие Элементы ImageList И еще ОДНО MainMenu
в форму с помощью двойного щелчка мышью на соответствующих
элементах в окошке инструментов. Назовите их imageListTooibar
и MainMenuFonts соответственно. В элементе ImageList будут
храниться рисунки, которые мы будем использовать
для кнопок, а в MainMenu — меню, которое будет
использовано в качестве раскрывающегося списка.
3. Добавьте три пункта Menuitem в управляющий
элемент MainMenuFonts и присвойте свойствам
значения, согласно таблице слева.
Имя
menultemFonts
menuItemMS
menultemTimes
Текст
MS Sans Serif
Times New Roman
360 Глава 14
4. Добавьте в imageList четыре рисунка, щелкнув мышью на кнопке,
расположенной справа от свойства images в управляющем
элементе imageList. Три из этих рисунков могут быть найдены
в поддиректории Common7 той директории, в которой вы
инсталлировали Visual Studio:
<Директория, содержащая y5f.i\ZET>\Common7\Graphics\bitmaps\Tlbr_W95
под именами BLD.BMP, ITL.BMP И UNDRLN.BMP.
Для последнего пункта меню можно использовать произвольный
рисунок, например, содержащийся в исходной программе на сайте
издательства Wrox и используемый в данной книге (Font.bmp).
5. Щелкните два раза мышью на управляющем элементе Toolbar в окне
инструментов и добавьте ее к форме. Назовите его tooibarFonts.
Эта панель инструментов может частично заслонить RichTextbox.
Для исправления данной ситуации щелкните мышью на RichTextbox
и переместите его ниже панели инструментов.
6. Присвойте свойству imageList панели инструментов значение
ImageListToolbar.
7. Выберите СВОЙСТВО Button управляющего элемента Toolbar
и щелкните на кнопке, расположенной справа от него,
ЧТО ПОЗВОЛИТ Добавить КНОПКИ К Элементу Toolbar.
8. Добавьте к панели инструментов пять кнопок и очистите свойство
Text у каждой из них. Присвойте свойствам этих пяти кнопок
значения в соответствии с приведенной ниже таблицей:
ToolbarButton Свойства
Первая кнопка Name = toolBarButtonBold
Imagelndex = индекс рисунка,
обозначающего жирный шрифт (В)
Style - ToggleButton
Вторая кнопка Name = toolBarButtonltalic
Imagelndex = индекс рисунка,
обозначающего курсив (I)
Style = ToggleButton
Третья кнопка Name • toolBarButtonUnderline
Imagelndex = индекс рисунка,
обозначающего подчеркивание (U)
Style = ToggleButton
Четвертая кнопка Name = toolBarButtonSeparator
Style = Separator
Пятая кнопка Name = toolBarButtonFonts
imagelndex = индекс последнего
оставшегося рисунка
Style = DropDownButton
DropDownMenu = menuItemFonts
Дополнительные возможности Windows Form 361
Теперь форма должна выглядеть приблизи-
тельно так, как показано на рисунке слева.
Заметьте, что этот проект является
частью кода для настоящей книги,
его можно загрузить в виде проекта
Visual Studio.NET С именем Toolbars.
Добавление
обработчиков событий
Теперь можно добавить обработчик события
Buttonciick элемента Toolbar, для чего доста-
точно дважды щелкнуть мышью на управляю-
щем элементе:
private void toolBarFontsJButtonClick(object sender,
System.Windows.Forms.ToolBarButtonClickEventArgs e)
Font newFont;
//Переключение на индекс соответствующей кнопки в семействе Buttons
// управляющего элемента Toolbar
switch (toolBarFonts.Buttons.IndexOf(r.Button))
case 0: // Жирный шрифт
if (e.Button.Pushed)
// Создание нового шрифта с выделением жирным шрифтом
newFont•.=• new Font (rtfText.SelectionFont,
rtfText.SelectionFont.Style I FontStyle.Bold);
else
//Создание нового шрифта без выделения жирным шрифтом
newFont = new Font(rtfText.SelectionFont,
rtfText.SelectionFont.Style & -FontStyle.Bold);
rtfText.SelectionFont = newFont;
break;
easel: //Курсив
if (e.Button.Pushed)
/1 Создание нового шрифта с выделением курсивом
newFont = new Font(rtfText.SelectionFont,
rtfText.SelectionFont.Style I FontStyle.Italic);
• ;• , : • • e l s e ••;•;,•:'•. '•••,'•-'•'•. '• •' :
••••/•/• Создание нового шрифта без выделения курсивом
newFont = new Font(rtfText.SelectionFont,
rtfText.SelectionFont.Style & -FontStyle.Italic);
rtfText.SelectionFont = newFont;
break;
case 2: //Подчеркивание
if (e.Button.Pushed)
// Создание нового шрифта с подчеркиванием
newFont = new Font(rtfText.SelectionFont,
rtfText.SelectionFont.Style 1 FontStyle.Underline);
else
// Создание нового шрифта без подчеркивания
newFont = new Font(rtfText.SelectionFont,
rtfText.SelectionFont.Style & -FontStyle.Underline);
rtfText,SelectionFont = newFont;
break; • '•' . . ;• ;
: : : . •-.••'.•• \ \':-~':',:\- /_ •' • ; V • • • , • ' ' ' ' , :
362 Глава 14
В этой функции мы сначала определяем индекс той кнопки, которая была нажата.
Это необходимо, поскольку все кнопки семейства Buttons элемента Toolbar ис-
пользуют данное событие для оповещения о нажатии. После того, как та кнопка,
которая была нажата, определена, проверяем ее свойство Pushed, для того чтобы
понять, следует ли установить или удалить выбранный стиль шрифта, и в соответ-
ствии с этой информацией создаем новый стиль. В завершение присваиваем новый
шрифт СВОЙСТВУ SelectionFont управляющего Элемента rtfText.
Последний момент, касающийся тех экземпляров класса TooibarButton, кото-
рые управляют стилем шрифта, заключается в том, что они должны правильно
отражать шрифт, используемый для текущего выделения. С этой целью в управля-
ющий элемент RichTextbox следует добавить событие Selectionchanged. Сначала
мы подписываемся на это событие в конструкторе:
public Forml ()
{
InitializeComponent();
this.menuItemFiles.Popup += new EventHandler(this.menuItemFiles_Popup);
this.rtfText.SelectionChanged +=
new EventHandler(this.rtfText_SelectionChanged);
}
Затем мы добавляем собственно обработчик событий:
private void rtfText_SelectionChanged(object sender, System.EventArcs e)
{
/ /: Корректная установка кнопок на панели инструментов в нажатом
// или ненажатом состояние
this.toolBarButtonBold.Pushed = rtfText.SelectionFont.Bold;
this.toolBarButtonltalic.Pushed = rtfText.SelectionFont.Italic;
this.toolBarButtonUnderline.Pushed = rtfText.SelectionFont.Underline;
: ) i • -.. •.. ••: • ' • V * . ' ' S • •. v
Элемент RichTextbox позволяет получать информацию о стиле текущего шрифта,
ПОЭТОМУ МЫ ПрОСТО ПРИСВОИМ СООТВеТСТВуЮЩИе Значения СВОЙСТВУ Enabled ДЛЯ
кнопок на панели инструментов.
Все, что теперь осталось сделать,— это обработать событие "щелчок мышью"
для двух пунктов меню в кнопке типа DropDownButton. Для этого добавим события
click в пункты меню — точно так же, как делали в примере использования меню,
приведенном выше в этой главе (двойным щелчком мыши на соответствующем
пункте):
private void menuItemMS_Click(object sender, System.EventArgs e)
// Создание нового шрифта, на основе требуемого семейства шрифтов.
Font newFont = new Font("MS Sans Serif", rtfText.SelectionFont.Size,
rtfText.SelectionFont.Style);
rtfText.SelectionFont = newFont; ^
' : ; > • V
V.:.-,V,;
private void menuItemTimes_Click(object sender, System.EventArgs e)
{
it Создание нового шрифта на основе требуемого семейства шрифтов.
Font newFont = new Font("Times New Roman*, rtfText.SelectionFont.Size,
rtfText.SelectionFont.Style);
rtfText.SelectionFont = newFont;
}
Мы создаем новый шрифт из того семейства шрифтов, который мы хотим исполь-
зовать, а затем присваиваем свойство SelectionFont вновь созданному шрифту.
Дополнительные возможности Windows Form 363
oimi
Files
В
Tins text is bold
J?ji5 text»italic
Tlw'text
| jr | д ( А
?<•*? is bokt italic
We used tbs toolbar to cbang»
Если вы используете версию Visual Studio.NET Beta 2, то при попытке
откомпилировать данный пример, вы увидите несколько предупреждений.
Это не является следствием каких-либо действий с вашей стороны,
скорее, это следствие действий со стороны компании Microsoft.
Дело в том, что код, генерируемый для экземпляров TooibarButton, включает
в себя строку, в которой происходит присваивание свойства itemData.
Компания Microsoft пометила это
свойство как устаревшее, которое
должно быть удалено когда-нибудь
в будущем. В предупреждениях
содержится совет использовать
вместо него свойство Tag.
Не стоит беспокоиться и. удалять
соответствующие строка —
редактор все равно вернет их
на место, как только вы откроете
окно разработки.
Теперь откомпилируйте и запустите
приложение (см. рис. слева), а затем по-
пытайтесь выполнить в нем какие-либо
действия.

Категория: информатика | Просмотров: 1459 | Добавил: basic | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Календарь
«  Февраль 2010  »
ПнВтСрЧтПтСбВс
1234567
891011121314
15161718192021
22232425262728
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

krutoto.ucoz.ru
Бесплатный конструктор сайтов - uCoz