Опубликован: 31.08.2006 | Доступ: свободный | Студентов: 3927 / 218 | Оценка: 4.14 / 3.89 | Длительность: 39:16:00
ISBN: 978-5-9570-0021-3
Лекция 16:

Управление формами Windows

Использование свойства DialogResult в вызывающей форме

Хотя в примере программы Multiple Forms я этого не продемонстрировал, вы можете эффективно использовать в программе на Visual Basic свойство DialogResult, которое присваивается в диалоговом окне. Более сложное диалоговое окно может предлагать пользователю дополнительные кнопки - Cancel ( Отмена ), Yes (Да), No (Нет), Abort (Прервать) и так далее. Каждая кнопка диалогового окна может быть ассоциирована со своим типом действия в главной программе. А в каждой процедуре события кнопки диалогового окна можно присваивать свойству DialogResult формы значение, соответствующее названию кнопки, как это сделано в следующем операторе программы:

Me.DialogResult = DialogResult.Cancel	  ' пользователь щелкнул на кнопке Cancel

В вызывающей процедуре события - другими словами, в процедуре события Button3_Click формы Form1 - вы можете написать дополнительный код программы, который будет определять, на какой кнопке диалогового окна щелкнул пользователь. Эта информация передается обратно в вызывающую процедуру через свойство DialogResult, которое содержится в имени переменной, использованном для объявления и создания экземпляра второй формы. Например, следующий код в Form1 может быть использован для того, чтобы проверить, щелкнул ли пользователь на кнопке OK, Cancel или какой-либо еще кнопке диалогового окна. (Первые две строки не новы, но они показывают имя переменной, которое необходимо использовать.)

Dim frmHelpDialog As New HelpInfo()
frmHelpDialog.ShowDialog()

If frmHelpDialog.DialogResult = DialogResult.OK Then
	MsgBox("Пользователь нажал OK")
ElseIf frmHelpDialog.DialogResult = DialogResult.Cancel Then
	MsgBox("пользователь нажал Отмена")
Else
	MsgBox("Была нажата другая кнопка")
End If

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

Размещение форм на рабочем столе Windows

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

В Visual Basic 6 расположением форм во время выполнения управлял графический инструмент Form Layout (Внешний вид формы). Вы перетаскивали в окне Form Layout (Внешний вид формы) маленький значок формы туда, где хотели увидеть окончательную форму во время выполнения, и Visual Basic записывал указанные координаты экрана. В Visual Basic .NET окна Form Layout (Внешний вид формы) нет, но вы по-прежнему можете точно указать расположение ваших форм на рабочем столе Windows. Инструмент, который вы используете, является не графическим окном размещения, а свойством с именем DesktopBounds, которое есть у каждой формы вашего проекта. Свойство DesktopBounds может быть прочитано или установлено во время выполнения, и оно принимает в качестве аргумента размеры прямоугольника - то есть две пары точек, которые указывают координаты верхнего левого угла окна и нижнего правого угла окна. Эти координатные точки выражаются в пикселях, а расстояния до верхнего левого и нижнего правого углов измеряются от верхнего левого угла экрана. (Подробнее о координатной системе Visual Basic вы узнаете в "Добавление графики и эффектов анимации" .) Так как свойство DesktopBounds принимает в качестве аргумента структуру прямоугольника, оно позволяет установить и размер формы, и ее расположение на рабочем столе Windows.

Кроме свойства DesktopBounds существует более простой механизм установки положения формы, который можно использовать во время разработки, хотя у него и меньше возможностей. Этот механизм - свойство StartPosition, которое позиционирует форму на рабочем столе Windows с помощью одной из следующих настроек свойства: Manual, CenterScreen, WindowsDefaultLocation или WindowsDefaultBounds. Значением по умолчанию свойства StartPosition является значение WindowsDefaultLocation. Если вы принимаете это значение, Visual Basic позволит расположить форму на рабочем столе там, где Windows сочтет нужным - обычно в верхнем левом углу экрана.

Если вы установите StartPosition на значение Manual, то можете вручную указать расположение формы с помощью свойства Location, в котором первое число (x) - это расстояние от левого края экрана, а второе число (y) - это расстояние от верхнего края экрана. (Подробнее о свойстве Location вы узнаете в "Добавление графики и эффектов анимации" .) Если вы устанавливаете StartPosition на значение CenterScreen, то форма появится в центре рабочего стола Windows. (Это моя любимая настройка свойства StartPosition.) Если вы установите StartPosition на значение WindowsDefaultBounds, то размер формы будет изменен так, чтобы он соответствовал стандартному окну приложения Windows, а затем форма будет открыта в расположении формы Windows по умолчанию. Если вы установите StartPosition на значение CenterParent, форма будет отображена в центре родительской формы. Это последнее значение особенно полезно в так называемых MDI-приложениях (многодокументный интерфейс), в которых родительское и дочерние окна имеют определенные связи.

В следующих упражнениях показано, как установить свойства StartPosition и DesktopBounds для размещения формы Visual Basic. Для размещения ваших форм на рабочем столе Windows во время выполнения вы можете использовать любую из этих методик.

Использование свойства StartPosition для размещения формы

  1. Щелкните на команде Close Solution (Закрыть решение) в меню File (Файл), а затем создайте в папке c:\vbnet03sbs\Гл.15 новый проект с именем My Desktop Bounds.
  2. Если форма проекта не отображается, отобразите ее сейчас.
  3. Щелкните на форме, чтобы в окне Properties (Свойства) отобразились ее свойства.
  4. Установите свойство StartPosition на значение CenterScreen. Изменение свойства StartPosition на CenterScreen указывает Visual Basic отобразить форму при запуске программы в центре рабочего стола Windows.
  5. Чтобы запустить приложение, щелкните на кнопке Start (Начать). Visual Basic загрузит форму и отобразит ее в центре экрана, как показано ниже.

  6. Чтобы завершить выполнение программы, щелкните на кнопке Закрыть формы. Вернется среда разработки.
  7. Установите свойство StartPosition на значение Manual. Установка этого свойства на значение Manual указывает Visual Basic разместить форму в соответствии со значениями, записанными в свойстве Location.
  8. Установите свойство Location на значение 100, 50. Свойство Location указывает положение верхнего левого угла формы.
  9. Чтобы запустить приложение, щелкните на кнопке Start (Начать). Visual Basic загрузит форму и отобразит ее на рабочем столе Windows в 100 пикселях от левого и 50 пикселях от верхнего краев экрана, как показано ниже.


  10. Чтобы закрыть программу, щелкните на кнопке Закрыть формы.

Вы провели эксперименты с несколькими базовыми параметрами свойства StartPosition, определяющего расположение формы. Теперь вы будете использовать свойство DesktopBounds для задания размера и положения окна второй формы во время выполнения программы. Вы также узнаете, как создавать новую форму во время выполнения без использования команды Add Windows Form (Добавить форму Windows) из меню Project (Проект).

Жанболат Шаймерден
Жанболат Шаймерден

Можно ли выбирать язык для надписей и команд в среде разработки?

Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Светлана Ведяева
Светлана Ведяева
Россия, Саратов