Как создать элемент управления в visual studio
Перейти к содержимому

Как создать элемент управления в visual studio

  • автор:

Как создать элемент управления в visual studio

В этой статье приводится обзор статей на смежную тему, иллюстрирующих основные понятия разработки элементов управления Microsoft Windows на основе обсуждения и фрагментов кода. (7 печатных страниц)

Исходный код WinFormControls.exe можно загрузить из MSDN Code Center.

Этот обзор открывает серию из пяти статей по разработке элементов управления в Microsoft ® .NET:

  • Разработка пользовательских элементов управления Windows с помощью Visual Basic .NET (обзор)
  • Добавление проверки правильности регулярного выражения
  • Объединение нескольких элементов управления в один
  • Расширение элемента управления TreeView
  • Рисование собственных элементов управления с помощью GDI+

Введение

Одним из самых важных моментов маркетингового продвижения Microsoft ® Visual Basic ® всегда была поддержка компонентов, позволяющая третьим лицам разрабатывать визуальные элементы управления (и, в конечном счете, невизуальные компоненты), которые предоставляют разработчику Visual Basic новые функциональные возможности. Этот аспект разработки Visual Basic привел к появлению огромного числа как свободно распространяемых, так и коммерчески распространяемых элементов управления. В конечном счете, новые визуальные и невизуальные компоненты могли разрабатываться даже непосредственно в Visual Basic, что привело к еще большему увеличению числа элементов управления, многие из которых были созданы разработчиками (и группами разработчиков) для своего собственного пользования.

Примечание Переход от используемых в настоящий момент элементов управления Microsoft ActiveX ® к Microsoft .NET не влечет за собой модернизацию или написание нового кода. С помощью интегрированной среды разработки Microsoft Visual Studio ® .NET (в меню Tools выберите Customize Toolbox) или утилиты .NET Framework ActiveX Control Importer (Aximp.exe) элементы управления ActiveX можно использовать из приложений .NET. Если какой-то определенный элемент управления не работает в .NET, возможно, разработчик компонента должен модернизировать его. При работе с элементами управления, приобретенными у третьих лиц, проверьте наличие обновлений элемента управления или версии .NET на Web-сайте поставщика.

В мире разработки .NET по-прежнему сохраняется потребность в пользовательских компонентах UI, однако механизмы создания этих компонентов изменились. В этой статье будут рассмотрены следующие вопросы: как и для чего разрабатываются элементы управления Microsoft Windows ® , как разработка элементов управления изменилась по сравнению с версиями Visual Basic 5.0 и 6.0; также приведены четыре примера разработки элементов управления (каждый из них рассматривается подробно в отдельной статье).

Для чего разрабатываются собственные элементы управления?

Если необходимо ограничить тип текста, который может быть набран в Windows Form TextBox, в коде формы можно создать процедуру, обрабатывающую событие KeyPress. Затем в этой процедуре обработки событий можно проверить нажатую клавишу и либо позволить ее, либо блокировать результат нажатия:

Private Sub TextBox1_KeyPress(ByVal sender As Object, _ ByVal e As System.Windows.Forms.KeyPressEventArgs) _ Handles TextBox1.KeyPress If Not Char.IsDigit(e.KeyChar) Then e.Handled = True Else e.Handled = False End If End Sub

Примечание Перехват нажатия клавиш не обеспечивает ввод исключительно цифр, поскольку пользователь может вставить значение в TextBox, или в TextBox могут начать накапливаться недействительные данные. Другие события, такие как TextChanged, имеют более широкие возможности, однако предпочтительнее выполнить проверку с помощью событий Validating или Leave, когда пользователь выходит из элемента управления для ввода данных. Проверка только при выходе из элемента управления позволяет устранить немедленную обратную связь, т.е. блокировку нажатия недопустимых клавиш, при этом пользователь может вставить текст с «незначительными отклонениями», например, «3425 2343 2342 2342», в поле, не допускающее пробелов, и затем удалить их перед выходом из элемента управления.

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

Как изменилась разработка элементов управления под влиянием наследования?

Разработка элементов управления в .NET в значительной степени отличается от разработки в Visual Basic 6.0. Это сводится в основном к возможности наследования в .NET. Разработка в Visual Basic 6.0 была существенно ограничена рисованием и/или использованием комбинации других элементов управления для создания требуемых функциональных возможностей. Если требовалось создать пользовательское текстовое поле ввода, описанное ранее в этой статье, было необходимо создать новый элемент управления ActiveX, содержащий TextBox.

Примечание Этот процесс часто называется включением и делегированием и фактически используется также в классах, отличных от элементов управления, Visual Basic 6.0, когда необходимо смоделировать наследование.

Если ожидаемые свойства TextBox (в частности, свойство Text) не добавить в новый элемент управления, их в нем не будет. Кроме того, будет необходимо добавить код, обеспечивающий заполнение TextBox’ом всей области пользовательского элемента управления и обрабатывающий изменение размеров. Конечно, этой цели можно достигнуть и с помощью ActiveX Control Interface Wizard (Visual Basic 6.0 add-in, см. рис. 1), и это было бы несложно, однако тот же результат достигается в .NET совершенно по-другому.

Рис. 1. В Visual Basic 6.0 имеется add-in, упрощающий разработку элемента управления с помощью автоматического добавления и отображения свойств элемента управления.

При создании собственного элемента управления наследование позволяет избежать дублирования путем его построения на основе функциональных возможностей любого другого элемента управления .NET. Чтобы создать собственный элемент управления TextBox, создайте элемент управления, который наследуется из существующего элемента управления TextBox, а не из UserControl. Базовый элемент управления, т.е. источник наследования, предоставляет все свои функциональные возможности. Следовательно, разработчику необходимо закодировать только те аспекты элемента управления, которые отличаются от этой основы. В качестве практики ниже приводится код, необходимый для создания собственного элемента управления TextBox, позволяющего ввод только числовых данных.

Примечание Чтобы самостоятельно проверить этот код, просто создайте новый проект Visual Basic .NET с помощью шаблона Windows Application так, чтобы получить пустую форму для проверки нового элемента управления, и затем добавьте к проекту новый класс (NumericTextBox). Замените код в новом файле класса на приведенный ниже код и затем постройте свой проект. После этого проект можно добавить на панель инструментов. В меню Tools щелкните Customize Toolbox и укажите путь к .exe-файлу, созданному в результате построения проекта:

Public Class NumericTextBox Inherits System.Windows.Forms.TextBox Protected Overrides Sub OnKeyPress(ByVal e As _ System.Windows.Forms.KeyPressEventArgs) If Not Char.IsDigit(e.KeyChar) Then e.Handled = True Else e.Handled = False End If End Sub End Class

Выше был приведен действительно весь требуемый код, однако, если быть придирчивым, количество строк кода можно сократить с помощью булевой логики:

Public Class NumericTextBox Inherits System.Windows.Forms.TextBox Protected Overrides Sub OnKeyPress(ByVal e As _ System.Windows.Forms.KeyPressEventArgs) e.Handled = Not Char.IsDigit(e.KeyChar) End Sub End Class

Не выполняя других функций, этот элемент управления правильно выводится на экран и располагает теми же событиями, свойствами и методами, как и TextBox. Кроме того, с этим элементом управления можно связать данные без дополнительного кода, поскольку эти функциональные возможности также предоставляются в базовом элементе управления.

Примечание Этот элемент управления довольно ограничен и позволяет вводить только цифры 0-9. Другим словами, ввод числовых данных с запятыми, десятичными точками или отрицательным знаком недопустим. Более функциональный метод проверки достоверности ввода будет рассмотрен в первой статье этой серии. (Дополнительная информация об этих четырех примерах содержится в разделе Примеры далее в этой статье).

Аналогичный элемент управления, построенный с помощью Visual Basic 6.0, имел бы почти такой же объем значимого кода, но также и большой объем сервисного кода, служащего для обработки изменения размеров элемента управления и предоставления выборочных свойств. Хотя сокращение объема кода, который нужно написать, — это большое преимущество построения элементов управления с помощью наследования, но это только одно преимущество. Более значительное преимущество наследования состоит в том, что недавно созданный элемент управления будет работать с любым кодом, ожидавшим тип базового элемента управления, который позволяет передавать новый NumericTextBox в любую процедуру, ожидающую элемент управления TextBox. Расширение существующего элемента управления вместо работы с классом UserControl позволяет не только использовать функциональные возможности базового элемента управления, но также получить дополнительное преимущество, связанное со знакомством разработчиков со свойствами, методами и событиями базового элемента управления. Если разработчик знает, как работать со стандартным TextBox, он может работать с новым NumericTextBox без дополнительного обучения. Возможность наследования из существующего класса (в данном случае из элемента управления) является одним из самых значительных различий между Visual Basic 6.0 и .NET, но не единственным. Если изучить примеры, приведенные далее в этом ряде статей, можно заметить, что элементы управления Windows Forms обладают многими мощными возможностями, и на их создание будет затрачено меньше усилий по сравнению с более ранними версиями Visual Basic.

Ресурсы

Чтобы облегчить построение собственных элементов управления Windows Forms, ниже приводится список ресурсов, посвященных некоторым из наиболее общих концепций, методов и проблем.

  • Наследование из базового класса в Microsoft .NET
  • Создание элементов управления для Windows Forms (Документация по Visual Studio .NET)
  • Разработка элементов управления Windows Forms (Документация по .NET Framework)
  • Разработка в .NET Framework принудительных пользовательских элементов управления, предназначенных для Forms (MSDN Magazine, апрель 2002 г.)
  • Примеры .NET для Windows Forms: создание элементов управления (из .NET QuickStarts)
  • Отладка элементов управления Windows Forms, созданных с помощью Visual Basic .NET или Visual C# .NET

В дополнение к вышеупомянутым ресурсам были составлены несколько примеров, иллюстрирующих некоторые из наиболее общих концепций разработки элементов управления. Здесь приводится классификация элементов управления по небольшим группам категорий, основанная на требующихся функциональных возможностях:

  1. Незначительно расширенные элементы управления
    Внесение небольших изменений в поведение существующего элемента управления, например, NumericTextBox, (см. выше) и Regular Expression TextBox, который подробно рассматривается далее в разделе Примеры, и добавление лишь немногих свойств, методов или событий, если таковые вообще имеются. Элементы управления в этой категории обычно наследуются из существующего элемента управления (например, System.Windows.Forms.TextBox).
  2. Существенно расширенные элементы управления
    Построение на основе существующего элемента управления и добавление многих новых функциональных возможностей и, как правило, нескольких новых свойств, методов и/или событий. Примерами этой категории элементов управления являются связанный с данными помеченный ListBox и связанный с данными группированный TreeView (подробнее см. далее в разделе Примеры). Как и незначительно расширенные элементы управления, элементы управления в этой категории обычно наследуются из существующего элемента управления (например, System.Windows.Forms.TreeView).
  3. Составные элементы управления
    Это элементы управления, которые объединяют несколько других элементов управления, например, TextBox со связанным элементом управления up/down, и подразумевают добавление пользовательских свойств, методов и событий. Примером этого типа элементов управления является связанная с данными радио-кнопка опроса (подробно рассматриваемая далее в разделе Примеры). Элементы управления этой категории должны наследоваться из System.Windows.Forms.UserControl. Для быстрого начала работы над ними необходимо изучить шаблон UserControl в Visual Studio .NET.
  4. Полностью пользовательские элементы управления
    Это элементы управления, которые разрабатываются «с нуля», или любые элементы управления, прорисовка которых обрабатывается собственными силами. Одним из примеров этого типа пользовательского элемента управления является связанный с данными элемент управления просмотром эскизов (подробно рассматриваемый далее в разделе Примеры), однако к этой категории можно отнести широкий спектр элементов управления. Элементы управления в этой категории просто наследуются из System.Windows.Form.Control.
  5. Расширители функциональности (Extender Providers)
    Этот тип элементов управления или компонентов в значительной степени отличается от других четырех категорий, поскольку он работает путем добавления функциональных возможностей к другим элементам управления в той же форме. Примерами этого типа элементов управления являются ToolTip, ErrorProvider и HelpProvider. Процесс построения одного из таких элементов управления рассматривается в первой статье этой серии.

Примеры

Каждый из этих примеров иллюстрирует определенные аспекты разработки элемента управления, включая наследование, связывание данных и рисование собственной графики. Все примеры можно загрузить в одном файле по ссылке в начале этой статьи.

В первой статье &quotДобавление проверки правильности регулярного выражения» рассматриваются основы наследования из другого элемента управления и добавление собственных свойств, методов и событий наряду с добавлением собственного кода. Кроме того, этот пример иллюстрирует альтернативный способ добавления тех же функциональных возможностей через расширитель функциональности. Во второй статье «Объединение нескольких элементов управления в один» с помощью элемента управления — радио-кнопки опроса — иллюстрируется процесс создания пользовательского элемента управления путем объединения существующих элементов управления и описывается, как простое связывание данных работает с разрабатываемыми элементами управления.

В оставшихся примерах показана более продвинутая разработка элементов управления, включающая сложное связывание данных и рисование собственного пользовательского интерфейса с помощью GDI+. В третьей статье «Расширение элемента управления TreeView» описывается разработка относительно сложного связанного с данными элемента управления TreeView, выводящего на экран иерархию элементов на основе источника данных. В последней статье «Рисование собственных элементов управления с помощью GDI+» подробно рассматривается элемент управления, обрабатывающий всю прорисовку: связанный с данными просмотр эскизов. Помимо специфичных для элемента управления функциональных возможностей последний пример иллюстрирует также основные методы GDI+, такие как рисование строк, прямоугольников и изображений.

Панель Toolbox в Visual Studio

Одно из основных преимуществ над другими интегрированными средами разработки состоит в том, что компания Microsoft предлагает пользователям реальную возможность перемещать элементы при проектировании как веб-, так и сложных клиентских приложений. Все эти элементы размещены в окне Toolbox ( Ctrl+Alt+X ), доступ к которому можно получить посредством меню View:

Окно Toolbox в Visual Studio

Окно Toolbox имеет интересное свойство: вы можете скопировать фрагмент кода в него, щелкнув на области кода и перетащив ее в окно Toolbox. Вы можете также переименовать и переупорядочить ваши фрагменты кода, сделав их действительно полезными для презентаций или хранения часто используемых фрагментов.

Окно Toolbox содержит все доступные компоненты для активного в данный момент документа, открытого в главном рабочем окне. Ими могут быть визуальные компоненты, например кнопки и текстовые поля; невидимые, сервисные объекты, например таймеры или регистрационные журналы системных событий; и даже элементы дизайна, такие как классы и интерфейсные объекты, используемые в инструменте Class Designer.

Система Visual Studio 2013 группирует доступные компоненты, а не смешивает их в одну кучу. Такая группировка по умолчанию позволяет проще находить требуемые элементы контроля; например, компоненты для работы с данными содержатся в отдельной группе Data.

По умолчанию эти группы представлены в виде списка. Каждый компонент представлен с помощью своей собственной пиктограммы и имеет название. Этим новая версия системы Visual Studio 2013 отличается от старого способа представления доступных объектов, в которых окно Toolbox просто представляло собой список пиктограмм, а пользователь должен был угадать, каким компонентам они соответствуют. Вы можете изменять представление каждой группы элементов управления по отдельности. Для этого щелкните правой кнопкой мыши в любом месте области, где расположена группа, и снимите флажок с команды List View в контекстном меню.

Группы элементов в окне Toolbox

Независимо от представления компонентов способ их использования в программе остался прежним: щелкните и перетащите желаемый компонент на форму активного документа или дважды щелкните на компоненте в системе Visual Studio, чтобы автоматически добавить его экземпляр. Визуальные компоненты, такие как кнопки и текстовые поля, появляются на форме, после чего пользователь может перемещать их, изменять размеры или фиксировать с помощью свойств сетки. Невизуальные компоненты, такие как таймер, отображаются в виде пиктограмм с ассоциированными метками в области формы, предназначенной для невидимых компонентов.

В левом верхнем углу на самом первом рисунке показана группа GettingStarted Controls с единственным компонентом SampleButton. По существу, строка «GettingStarted» — это имя проекта WPF. Он содержит элемент управления SampleButton. Когда вы начинаете создавать свои собственные компоненты или элементы управления, то, вместо того, чтобы предоставить вам вручную создавать новую закладку и повторять весь процесс добавления каждого элемента, система Visual Studio 2013 автоматически просматривает все проекты вашего решения. Как только компоненты или элементы управления будут идентифицированы (т.е. будет распознан любой класс, реализующий компонент System.ComponentModel.IComponent или System.Windows.FrameworkElement для программной модели WPF), в проекте будет создана новая закладка, на которую будут добавлены соответствующие элементы с пиктограммами и именами классов, заданными по умолчанию, в данном случае SampleButton. Когда вы используете компонент, в области невидимых элементов появляется соответствующая пиктограмма.

Система Visual Studio 2013 просматривает все проекты в вашем решении и перед, и после построения решения. Если решение состоит из многих проектов, то этот процесс может занять много времени. В таком случае следует подумать об отключении этой возможности, установив свойство AutoToolboxPopulate узла Windows Forms Designer в диалоговом окне Options равным false (Tools —> Options).

Для того чтобы настроить внешний вид элементов в окне Toolbox, добавьте в проект ваш компонент или элемент в виде побитового изображения размером 16×16 пикселей. Затем выберите вновь вставленное побитовое изображение в окно Solution Explorer и перейдите к окну Properties. Убедитесь, что свойство Build установлено равным Embedded Resource. Теперь достаточно связать атрибут вашего элемента управления с атрибутом изображения ToolboxBitmap.

Следует отметить, что при настройке окна Toolbox и внешнего вида элементов управления в программной модели Windows Presentation Foundation (WPF) используется понятие хранилища метаданных, а не атрибуты. Обычно это приводит к появлению дополнительных сборок, которые можно использовать для уточнения внешнего вида элементов управления как в системе Visual Studio 2013, так и в системе Expression Blend.

Настройка компонентов

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

Перемещение отдельного компонента не составляет труда. Найдите его в окне Toolbox, щелкните на нем и перетащите в новое место. Когда достигнете пункта назначения, отпустите кнопку мыши, и компонент будет перемещен в новое место списка. Точно так же можете переместить компонент в другую группу — просто перетаскивайте его вверх или вниз по окну Toolbox, пока не окажетесь в нужной группе. Эти действия можно выполнять как с представлением List, так и с представлением Icon.

Если хотите скопировать компонент из одной группы в другую, а не переместить его, то в ходе перетаскивания удерживайте нажатой клавишу Ctrl . Иногда удобно иметь свою собственную группу, чтобы хранить в ней элементы управления и компоненты, которые используются чаще других. Для того чтобы создать новую группу в окне Toolbox, щелкните правой кнопкой мыши в любом месте окна Toolbox и выполните команду Add Tab. Внизу окна Toolbox будет добавлена новая пустая закладка, которой вы должны присвоить имя. После того как вы назовете закладку, добавьте в нее компоненты, следуя инструкциям, описанным в этом разделе.

Если вы впервые запускаете систему Visual Studio 2013, то элементы в каждой группе будут упорядочены по алфавиту. Однако после перемещения элементов вы можете обнаружить, что они перепутаны, и решите просто начать все сначала. Все, что вам для этого необходимо, — щелкнуть правой кнопкой мыши в группе и выполнить команду Sort Items Alphabetically.

По умолчанию элементы управления добавляются в окно Toolbox в порядке следования имен их классов. Это значит, что вы столкнетесь с непонятными именами, особенно, если захотите добавить в окно Toolbox элементы управления COM. Система Visual Studio 2013 позволяет пользователю изменять имена компонентов на что-нибудь более понятное.

Для того чтобы изменить имя компонента, щелкните правой кнопкой мыши в окне Toolbox и выполните команду Rename Item. На месте первоначального названия появится поле редактирования, в которое можете ввести удобное для вас имя, даже если оно содержит специальные символы.

Если же вы еще больше запутались, работая с компонентами из непривычных групп, и потеряли ориентацию, то выполните команду Reset Toolbox из того же самого контекстного меню, появляющегося после щелчка правой кнопкой мыши. Эта команда восстанавливает исходное состояние всех групп в окне Toolbox, причем компоненты сортируются по алфавиту и находятся в группах, которым принадлежали изначально.

Добавление компонентов

Иногда оказывается, что конкретный компонент, который вам нужен, отсутствует в списке Toolbox. Большинство основных компонентов .NET в этом списке есть, но некоторых нет. Например, компонент WebClient class в списке Toolbox по умолчанию не указан. Управляемые приложения могут также использовать компоненты COM. После добавления в окно Toolbox объекты COM могут быть использованы точно так же, как обычные компоненты .NET, и если они закодированы правильно, то вы можете программировать работу с ними как обычно, используя окно Properties и ссылаясь на их методы, свойства и события в своем коде.

Для того чтобы добавить компонент в свое окно Toolbox, щелкните правой кнопкой мыши на группе компонентов, в которую хотите добавить новый компонент, и выполните команду Choose Items. Через какое-то время (на медленном компьютере этот процесс может занять несколько секунд, потому что машина должна просмотреть кэш .NET, чтобы определить все возможные компоненты, которые можно выбрать) отобразится список .NET Framework components, как показано на рисунке ниже:

Список компонентов .NET Framework для окна Toolbox

Помните: команда Reset Toolbox удаляет все группы команд, созданные пользователем, поэтому сначала убедитесь, что вам действительно необходимо выполнить эту функцию!

Просмотрите список, чтобы найти элемент, который хотите добавить в окно Toolbox, и установите соответствующий флажок. Можете также добавлять несколько элементов одновременно, выбирая их до того, как щелкнуть на кнопке ОК. В то же время можете удалять элементы из окна, сбрасывая соответствующие флажки в списке. Обратите внимание на то, что в этом случае соответствующие элементы удаляются из всех групп, которым они принадлежат, а не только из той группы, которую вы редактируете в данный момент.

Если вам покажется трудным найти требуемый элемент, воспользуйтесь текстовым полем Filter, фильтрующим список по имени, пространству имен и имени сборки. В редких ситуациях список может не содержать элемент вообще. Это может произойти с нестандартными компонентами, например, созданными вами или не зарегистрированными в кэше Global Assembly Cache (GAC). Вы по-прежнему можете добавить их, используя кнопку Browse, чтобы просмотреть реальные файлы на компьютере. Выбирая и отменяя выбор требуемого элемента, щелкните на кнопке ОК, чтобы сохранить настройки окна Toolbox.

Компоненты COM, WPF, Silverlight Components и Workflow Activities можно добавить точно так же. Просто щелкните на соответствующей закладке в диалоговом окне, чтобы увидеть список доступных, правильно зарегистрированных компонентов COM. Можете также использовать кнопку Browse, чтобы найти элементы управления, которых нет в списке.

Как создать элемент управления в visual studio

Тема 7. Дополнительные средства Visual Basic для расширения возможностей приложений. Работа с редактором меню

Цель работы: ознакомить с приёмами добавления элементов управления в окно инструментов Visual Basic для создания диалоговых окон при построении приложения пользователя и использования редактора меню для управления событиями.

В состав Visual Basic входит библиотека дополнительных элементов управления, которые созданы в виде программных модулей с открытым доступом к свойствам, что позволяет разработчику программных приложений встраивать эти модули точно так же, как стандартные элементы управления. Такие модули получили название – элементы ActiveX . Например, при работе с приложениями MS Windows , мы часто используем такую функцию, как Save As (сохранить как). Такое диалоговое окно можно вызвать непосредственно из приложения, написанного на VB , оно называется — Элемент управления общим диалоговым окном ( CommonDialog ), что позволяет осуществить доступ к четырём диалоговым окнам Windows :

· File (Файл) – позволяет пользователю выбрать файл для открытия или выбрать имя файла для сохранения в нём информации.

· Font (Шрифт) – даёт возможность пользователю установить необходимые атрибуты шрифта и его вид.

· Color (Цвет) – даёт возможность изменить стандартный цвет

· Print (Печать) – позволяет выводить данные на печать или устанавливать параметры принтера.

Другим полезным элементом управления является – улучшенное текстовое окно ( RichTextBox ). Этот элемент полезен при создании в приложении на VB простого текстового редактора.

Чтобы получить доступ к элементам управления, которые не отображены в стандартном окне проекта Visual Basic , необходимо их добавить на панель элементов с помощью команды Components . Эту операцию можно выполнить тремя способами, которые продемонстрированы на рис. 31.

2 — В строке Меню открыть Project

1 – Набрать сочетание клавиш Ctrl+T

3 – Щёлкнуть правой клавишей мыши в окне General

Рис. 31. Способы открытия окна с перечнем дополнительных компонентов, которые можно использовать при разработке программ на VB

Команда Components позволяет открыть список в одноимённом окне для выбора необходимых дополнительных элементов управления из системного реестра Windows (рис. 32). Для переноса необходимого элемента управления на панель инструментов VB следует отметить этот элемент, нажать в окне на клавишу «Применить», а затем закрыть окно. Для выполнения дальнейшей разработки приложения с использованием меню, возьмём два элемента управления.

Улучшенное текстовое окно RichTextBox , на базе которого будет построен текстовый редактор, в новом приложении.

Общий диалог CommonDialog , будет использован для работы с редактором на форме проекта.

Рис. 32. Окно для выбора дополнительных элементов управления

Порядок выполнения работы

Предположим, что необходимо разработать приложение на VB , которое позволит пользователю вводить текстовые фрагменты в окне приложения, изменять параметры шрифта, сохранять текст в виде отдельного файла, находить в каталогах системы другие текстовые файлы и открывать их в приложении для внесения изменений.

С точки зрения разработчика, потребуется создать меню в приложении, для того, чтобы пользователь мог самостоятельно выбирать необходимый режим работы (инициировать событие). Для обеспечения такой цели в составе Visual Basic встроен редактор меню ( MenuEditor ), для вызова которого достаточно нажать на команду в строке Меню — Tools или на пиктограмму. Безусловно, прежде чем создавать приложение, необходимо продумать его функциональные возможности. Допустим, что в новом проекте будут созданы два блока для работы с данными: «Работа с файлами» и «Редактирование». Каждый блок должен содержать определённые команды, которые вызывают события, аналогичные нажатию на командную кнопку.

Рис. 33. Окно редактора меню с заполненными данными

Рис. 34. Пример разработки формы с встроенным меню

— этот значок обозначает элемент управления CommonDialog . При переносе его на форму из панели инструментов, он просто фиксируется, а при запуске приложения не отображается, хотя ему зададим свойства. Так, свойствам FileName и Filter установили, что будем работать с файлами в формате RTF , а свойству Name присвоили имя — CD 1.

Рис. 35. Окно свойств элемента CommjnDialog

При нажатии пользователем на строку в меню приложения «Загрузить файл» сработает событие A 1_ Click (), которое инициирует открытие стандартного окна (команда CD1.ShowOpen), а затем осуществит загрузку в текстовое окно на форме файла с именем, которое укажет пользователь. В данном случае, метод ShowOpen только открывает окно, после чего происходит прерывание, чтобы пользователь мог выбрать необходимый файл на носителе информации. При нажатии на кнопку Ok , система в качестве аргумента передаёт адрес файла в свойство FileName элемента с именем CD 1, закрывает диалоговое окно и управление передаёт приложению пользователя. На рис. 36 показаны две процедуры для открытия стандартных окон Windows при загрузке и сохранении файла, с использованием элемента управления CjmmjnDialog .

Рис. 36. Программные коды для открытия стандартных окон Windows при загрузке и сохранении файла

Вторая группа команд, которая объединена в меню на форме проекта, относится к редактированию параметров шрифта текста в окне на форме и цвета фона, что заложено в редакторе меню (рис. 33). Поэтому понадобится создать программные коды, которые позволяют обрабатывать событие при нажатии на соответствующую строку открытого меню на форме, и подключения соответствующих диалоговых окон Windows . Следует напомнить, что в диалоговом окне Font пользователь может изменить сразу несколько атрибутов, которые должны быть восприняты программой Visual Basic в виде свойств. Следовательно, при разработке приложения эти свойства необходимо назначить элементу управления, которым является RichTextBox с именем RT 1. Например, для перехвата назначенного цвета шрифта, потребуется в программе использовать свойство SelColor (приставка Sel от слова Self – отобрать). На рис. 37 показан фрагмент вариантов различных свойств, которые присваиваются шрифту в среде Visual Basic .

Рис. 37. Свойства шрифта в среде Visual Basic

Программные коды для обработки событий при выборе пользователем группы «Редактирование» в строке меню формы, показаны на рис. 38.

Рис. 38. Программные коды процедур обработки событий при изменении параметров шрифта и цвета фона в текстовом окне на форме пользователя

Удобством Visual Basic является то, что при работе с элементом управления улучшенное текстовое окно ( RichTextBox ) достаточно выделить фрагмент текста, а затем обращаться к процедурам редактирования (всё остальное сделает система сама, т.е. она запомнит место выделенного фрагмента, а затем только ему передаст необходимые параметры). Теперь можно сохранить проект под именем Pril 7. exe и приступить к работе с приложением. Файл, который будет создан в текстовом окне и сохранён под именем Sved 1. rtf , отобразится в каталоге в виде значка:

Задание для самостоятельной разработки

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

Вопросы для самоконтроля

1. Где хранятся элементы управления ActiveX на компьютере пользователя?

2. В какой последовательности добавляют на панель инструментов Visual Basic недостающий элемент управления?

3. Можно ли использовать многократно редактор меню ( Menu Editor ) Visual Basic при разработке одной формы проекта?

4. Как определить какими свойствами и методами обладает элемент управления RichTextBox прежде чем готовить программные коды обработки событий?

Элементы управления

Текстовое поле — TextBox
Служит для того, чтобы пользователь мог ввести текст во время работы программы.
Свойства:
Text — содержит символы, которые ввел пользователь. Другие свойства аналогичны элементу «Надпись».

Рамка — Frame — используется для оформления, а также для группировки переключателей. Сверху на рамке можно сделать надпись с помощью свойства Caption. Если нужно создать элемент внутри рамки, то перед их рисованием рамку выделяют, тогда рамка может служить контейнером для группы переключателей.

  • Кнопка Command Button.
    Свойства:
    • Caption — надпись на кнопке.
    • Enabled — доступность элемента. С помощью этого свойства блокируются элементы, которые пользователю нельзя использовать в данный момент. Заблокированные элементы отображаются серым цветом. В заблокированное текстовое поле не получится ввести текст, а заблокированную кнопку нельзя нажать.
      Выбирают из двух значений:
      • True (Да) — элемент управления доступен пользователю.
      • False (Нет) — элемент управления не доступен.
    • Visible — видимость элемента управления:
      • True (Да) — виден.
      • False (Нет) — не виден.

  • Флажок — Check Box
    Используется, когда пользователь должен ввести Да (флажок установлен ) или Нет (флажок снят )
    Свойства:
    Value — содержит значение элемента управления. Имеются следующие значения:
    1. — нет, флажок снят;
    2. — есть, флажок установлен;
    3. — флажок недоступен.

  • Переключатель — Option Button
    Позволяет пользователю выбрать один вариант из нескольких.
    Свойства:
    Value — показывает выбрана опция (1) или нет (0).

  • Поле со списком ComboBox
    В это поле пользователь может вводить текст так же, как и в TextBox, а кроме этого, если нажать , то откроется список, из которого можно выбрать нужную строку.
    Свойства:
    • Text — содержимое строки, введенное пользователем или выбранное из списка.
    • List — строки списка (многострочное свойство).
    • ListIndex — номер выбранной пользователем строки (нумерация начинается с нуля, если никакая строка не была выбрана, то свойство равно -1).

  • Список ListBox
    Cодержит список строк, в котором пользователь может выбрать одну или несколько строк.
    Свойства элемента аналогичны элементу ComboBox, за исключением свойства Text, которое здесь отсутствует.

  • Рамка для рисунка PictureBox
    Содержит рисунок. Рисунок выбирается с помощью свойства Picture, в которое вводится имя файла или выбирается с помощью кнопки .
  • Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *