Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Благодарности 5 страница






Рис. 3-19. Выбор файла графического изображения

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

Позиционирование элементов управления в форме

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

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

Привязка к сетке

Для удобства позиционирования элементов в режиме проектирования формы используется специальная точечная сетка (рис. 3-20).

Рис. 3-20. Сетка для точного позиционирования элементов управления

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

Управление режимом привязки к сетке выполняется путем настройки свойств формы. Щелкните форму правой клавишей мыши в таком месте, где нет элементов управления (или в окне редактирования формы, но рядом с формой). Затем в контекстном меню выберите строку Properties. Далее в свойствах формы отыщите группу свойств с названием Design (рис. 3-21).

Рис. 3-21. Свойства формы для этапа проектирования

Обратите внимание, что свойство DrawGrid по умолчанию имеет значение True. Если заменить его значением False, сетка исчезнет. Скрытие сетки поможет Вам точнее оценить дизайн формы еще на этапе проектирования.

Свойство GridSize состоит из свойств GridSize.Width и GridSize.Height. Первое из них задает размер сетки по горизонтали, а второй — по вертикали. В зависимости от требований к точности позиционирования Вы можете оставить значения по умолчанию (8 пикселов), или задать другие.

Когда разработка дизайна формы завершена, мы рекомендуем Вам установить значение свойства Locked равным True. После этого изменение (намеренное или случайное) взаимного размеров формы будет невозможно.

Заметим, что свойство Locked определено не только для формы, но и для элементов управления. Если Вам нужно зафиксировать расположение в форме какого-то одного элемента управления, установите свойство Locked этого элемента, равным True.

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

Настройка взаимного расположения элементов формы

Для точной настройки взаимного расположения элементов управления предназначено меню Format главного окна системы разработки Microsoft Visual Studio.NET. Строки этого меню дублируются для удобства в панели инструментов выравнивания, показанной на рис. 3-22.

Рис. 3-22. Панель инструментов выравнивания элементов управления

Чтобы выровнять по горизонтали, например, поля ввода идентификатора пользователя и пароля, нужно выделить их по очереди левой клавишей мыши, удерживая при этом на клавиатуре в нажатом состоянии клавишу Ctrl. То поле (или другой элемент управления), которое будет выделено последним, станет эталонным. Именно по его границе и будут выделены остальные выделенные Вами элементы управления.

Выравнивание

После выделения выберите из упомянутого выше меню Format строку Align, после чего на экране появится меню инструментов выравнивания (рис. 3-23).

Рис. 3-23. Меню Align

Если выбрать из этого меню строку Lefts, выделенные ранее элементы управления будут выровнены по левой границе того элемента, который был выбран последним.

Заметим, что вместо меню можно использовать панель инструментов, показанную на рис. 3-22. Строке Lefts в этой панели соответствует вторая кнопка слева. Самая левая кнопка панели инструментов выравнивания обеспечивает привязку выбранного элемента к сетке.

Средствами меню Align можно выровнять выделенные элементы по вертикали и горизонтали. Их можно выровнять левой (строка Lefts), правой (Rights), верхней (Tops) и нижней (Bottoms) границам. Можно выполнить центровку элементов по вертикали (Centers) и горизонтали (Middles), а также привязать границы элементов к сетке (to Grid).

Установка размеров

Строки меню Make the Same Size позволяют сделать одинаковыми размеры выделенных элементов управления по вертикали и горизонтали (рис. 3-24).

Рис. 3-24. Меню Make the Same Size

С помощью строк Width и Height можно сделать одинаковыми размеры выделенных элементов управления, соответственно, по ширине и высоте. Строка Both позволяет уравнять одновременно и ширину, и высоту элементов.

Если же выбрать строку Size to Grid, то размеры выделенных элементов изменятся таким образом, чтобы оказаться привязанными к сетке. Эта операция удобна, если вначале размеры элементов не были привязаны к сетке, а затем Вы решили выполнить такую привязку.

Установка промежутков между элементами

Меню Horizontal spacing (рис. 3-25) и Vertical spacing (рис. 3-26) позволяют уровнять расстояние между элементами по горизонтали и вертикали, соответственно. В этой операции задействуют, как правило, не менее трех элементов.

Рис. 3-25. Меню Horizontal spacing

Рис. 3-26. Меню Vertical spacing

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

Строки Increase и Decrease позволяют, соответственно, увеличить и уменьшить расстояние между элементами.

И, наконец, строка Remove позволяет ликвидировать свободное пространство между элементами, расположив их вплотную.

Центровка элементов в окне формы

Меню Center in Form (рис. 3-27) предназначено для центровки элементов внутри окна формы.

Рис. 3-27. Меню Center in Form

С помощью строки Horizontally можно выполнить центровку по горизонтали, а с помощью строки Vertically — по вертикали.

Передний и задний план

Заметим, что элементы в форме могут пересекаться, перекрывая друг друга. С помощью меню Order (рис. 3-28) разработчик может изменить порядок расположения элементов, выдвигая некоторые элементы на передний план (строка Bring to Front) или убирая некоторые элементы на задний план (строка Send to Back).

Рис. 3-28. Меню Order

Форма и клавиша табуляции

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

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

Точно такое же поведение можно организовать и в формах, создаваемых на базе класса System.Windows.Forms. Для этого нужно настроить свойства TabStop и TabIndex.

Свойство TabStop

Свойство TabStop может иметь два значения — True и False. Если у элемента управления, расположенного в форме, это свойство имеет значение, равное True, пользователь может передать фокус ввода данному элементу управления с помощью клавиши табуляции. В том случае, когда значение свойства TabStop равно False, при нажатии на клавишу табуляции фокус ввода будет «перескакивать» через соответствующий элемент управления.

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

В нашей программе UserLogin свойство TabStop имеет по умолчанию значение True для полей ввода идентификатора пользователя и пароля, а также для кнопок Войти и Отменить.

Свойство TabIndex

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

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

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

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

Обработка событий

Итак, мы добавили в форму приложения UserLogin все необходимые текстовые строки, изображения и элементы управления. Вы можете оттранслировать и запустить приложение, нажав в Microsoft Visual Studio.NET кнопку F5.

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

Обработка идентификатора и пароля

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

Чтобы реализовать такое поведение, добавьте обработчик события для кнопки Войти. Для этого в окне дизайнера форм нужно дважды щелкнуть левой клавишей мыши указанную кнопку. В ответ дизайнер форм создаст для Вас пустое тело метода button1_Click. Этот метод получит управление во время работы приложения, когда пользователь щелкнет кнопку Войти.

Добавьте в тело метода button1_Click вызов метода MessageBox.Show, как это показано ниже:

private void button1_Click(object sender, System.EventArgs e)
{
MessageBox.Show(" User: " + textBox1.Text + " \n" +
" Password: " + textBox2.Text);
}

Обратите внимание, что мы передаем методу MessageBox.Show текстовую строку, составленную из свойств textBox1.Text и textBox2.Text элементов управления, предназначенных для ввода идентификатора пользователя и пароля, соответственно. Свойство Text содержит текстовую строку, представляющую текущее состояние элемента управления.

Чтобы пароль пользователя отображался с новой строки, мы использовали символ перевода строки " \n". В результате диалоговое окно с идентификатором пользователя и паролем будет иметь вид, показанный на рис. 3-29.

Рис. 3-29. Диалоговое окно с идентификатором пользователя и паролем

Закрытие формы

Кнопка Отменить предназначена для закрытия окна формы. Эта операция выполняется при помощи метода Close. Добавьте обработчик событий для кнопки Отменить, а затем добавьте вызов метода Close в этот обработчик событий:

private void button2_Click(object sender, System.EventArgs e)
{
Close();
}

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

Ссылки на ресурсы Интернета

Как мы уже говорили, по своему внешнему виду элемент управления LinkLabel очень похож на ссылку, размещенную на обыкновенной Web-странице. Используя такие элементы управления, можно сделать формы приложений похожими по внешнему виду на страницы Web-сайтов.

В нашем приложении UserLogin элемент управления LinkLabel применяется для ссылки на Web-сайт службы восстановления данных https://www.datarecovery.ru, а также для отправки электронного сообщения автору этой книги. Как Вы узнаете позже, эти элементы управления могут быть использованы для отображения на экране новых форм или любых других объектов.

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

Первую из этих ссылок (с надписью www.datarecovery.ru) необходимо обеспечить таким обработчиком событий:

private void linkLabel1_LinkClicked(object sender,
System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
linkLabel1.Links[linkLabel1.Links.IndexOf(e.Link)].Visited = true;
System.Diagnostics.Process.Start(linkLabel1.Text);
}

Изменение внешнего вида ссылки

Первая строка этого обработчика событий обеспечивает изменение внешнего вида ссылки после ее использования:

linkLabel1.Links[linkLabel1.Links.IndexOf(e.Link)].Visited = true;

Как она работает?

Обработчик события получает два параметра. Через параметр sender типа object передается ссылка на объект, вызвавший событие. В нашем случае это будет элемент управления типа LinkLabel с надписью www.datarecovery.ru.

Параметр e типа System.Windows.Forms.LinkLabelLinkClickedEventArgs предназначен для передачи параметров от элемента управления, вызвавшего появление события. В частности, через свойство e.Link передается ссылка, которую щелкнул пользователь.

Элемент управления LinkLabel может содержать информацию о нескольких ссылках. Полный список ссылок элемента linkLabel1 (с адресом Web-сайта) можно получить при помощи свойства Links. Далее, метод IndexOf позволяет получить из этого списка заданную ссылку, а именно, ссылку e.Link.

Теперь остается отметить эту ссылку как использованную, установив значение свойства Visited, равное true.

Запуск браузера

Итак, внешний вид ссылки мы изменили. Теперь обработчик события должен отобразить на экране компьютера содержимое главной страницы Web-сайта. Это можно сделать при помощи метода System.Diagnostics.Process.Start:

System.Diagnostics.Process.Start(linkLabel1.Text);

Данный метод пытается запустить на локальном компьютере программу или документ, путь к которому передается через единственный параметр. Мы передали этому методу адрес URL нашего Web-сайта www.datarecovery.ru. В результате выполнения метода будет запущен браузер, и в его окне появится загружена искомая Web-страница (рис. 3-30).

Рис. 3-30. Появилась главная страница Web-сайта www.datarecovery.ru

Отправка почтового сообщения

Вторая ссылка работает аналогичным образом. Для отправки электронного сообщения мы передаем методу System.Diagnostics.Process.Start наш адрес электронной почты:

private void linkLabel2_LinkClicked(object sender,
System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
linkLabel2.Links[linkLabel2.Links.IndexOf(e.Link)].Visited = true;
System.Diagnostics.Process.Start(" mailto: alexandre@frolov.pp.ru");
}

После использования этой ссылки на экране появится окно почтовой программы, зарегистрированной в системе по умолчанию (рис. 3-31).

Рис. 3-31. Отправка электронного сообщения

Полный исходный текст приложения UserLogin

Хотя Microsoft Visual Studio.NET позволяет создавать достаточно сложные приложения с помощью дизайнера форм, и Вы можете при этом никогда не увидеть его полного исходного текста, мы будем приводить полные исходные всех наших приложений. Это позволит Вам, с одной стороны, лучше изучить структуру приложений C# с графическим интерфейсом, а с другой — разрабатывать такие приложения на уровне исходных текстов без применения дизайнера форм.

Исходный текст приложения UserLogin мы привели в листинге 3-1.

Листинг 3-1. Файл ch03\UserLogin\Form1.cs

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace UserLogin
{
/// < summary>
/// Summary description for Form1.
/// < /summary>
public class Form1: System.Windows.Forms.Form
{
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.LinkLabel linkLabel1;
private System.Windows.Forms.LinkLabel linkLabel2;
private System.Windows.Forms.Label label5;
/// < summary>
/// Required designer variable.
/// < /summary>
private System.ComponentModel.Container components = null;

public Form1()
{
//
// Required for Windows Form Designer support
//
InitializeComponent();

//
// TODO: Add any constructor code after
// InitializeComponent call
//
}

/// < summary>
/// Clean up any resources being used.
/// < /summary>
protected override void Dispose(bool disposing)
{
if(disposing)
{
if (components! = null)
{
components.Dispose();
}
}
base.Dispose(disposing);
}

#region Windows Form Designer generated code
/// < summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// < /summary>
private void InitializeComponent()
{
System.Resources.ResourceManager resources = new System.Resources.ResourceManager(typeof(Form1));
this.label1 = new System.Windows.Forms.Label();
this.label2 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.textBox2 = new System.Windows.Forms.TextBox();
this.button1 = new System.Windows.Forms.Button();
this.button2 = new System.Windows.Forms.Button();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.label4 = new System.Windows.Forms.Label();
this.linkLabel1 = new System.Windows.Forms.LinkLabel();
this.linkLabel2 = new System.Windows.Forms.LinkLabel();
this.label5 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// label1
//
this.label1.Font = new System.Drawing.Font(" Haettenschweiler", 26.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));
this.label1.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(67)), ((System.Byte)(128)), ((System.Byte)(165)));
this.label1.Location = new System.Drawing.Point(128, 8);
this.label1.Name = " label1";
this.label1.Size = new System.Drawing.Size(216, 40);
this.label1.TabIndex = 0;
this.label1.Text = " DataRecovery.Ru";
//
// label2
//
this.label2.Font = new System.Drawing.Font(" Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));
this.label2.Location = new System.Drawing.Point(40, 158);
this.label2.Name = " label2";
this.label2.Size = new System.Drawing.Size(48, 16);
this.label2.TabIndex = 1;
this.label2.Text = " Имя: ";
//
// label3
//
this.label3.Font = new System.Drawing.Font(" Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));
this.label3.Location = new System.Drawing.Point(40, 184);
this.label3.Name = " label3";
this.label3.Size = new System.Drawing.Size(48, 23);
this.label3.TabIndex = 2;
this.label3.Text = " Пароль: ";
//
// textBox1
//
this.textBox1.Location = new System.Drawing.Point(104, 158);
this.textBox1.Name = " textBox1";
this.textBox1.Size = new System.Drawing.Size(104, 20);
this.textBox1.TabIndex = 3;
this.textBox1.Text = " ";
//
// textBox2
//
this.textBox2.Location = new System.Drawing.Point(104, 184);
this.textBox2.Name = " textBox2";
this.textBox2.PasswordChar = '*';
this.textBox2.Size = new System.Drawing.Size(104, 20);
this.textBox2.TabIndex = 4;
this.textBox2.Text = " ";
//
// button1
//
this.button1.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(224)), ((System.Byte)(224)), ((System.Byte)(224)));
this.button1.Location = new System.Drawing.Point(264, 160);
this.button1.Name = " button1";
this.button1.TabIndex = 5;
this.button1.Text = " Войти";
this.button1.Click += new System.EventHandler(this.button1_Click);
//
// button2
//
this.button2.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(224)), ((System.Byte)(224)), ((System.Byte)(224)));
this.button2.Location = new System.Drawing.Point(264, 192);
this.button2.Name = " button2";
this.button2.TabIndex = 6;
this.button2.Text = " Отменить";
this.button2.Click += new System.EventHandler(this.button2_Click);
//
// pictureBox1
//
this.pictureBox1.Image = ((System.Drawing.Bitmap)(resources.GetObject(" pictureBox1.Image")));
this.pictureBox1.Location = new System.Drawing.Point(40, 16);
this.pictureBox1.Name = " pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(72, 88);
this.pictureBox1.TabIndex = 7;
this.pictureBox1.TabStop = false;
//
// label4
//
this.label4.Font = new System.Drawing.Font(" Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((System.Byte)(204)));
this.label4.Location = new System.Drawing.Point(128, 56);
this.label4.Name = " label4";
this.label4.Size = new System.Drawing.Size(216, 48);
this.label4.TabIndex = 8;
this.label4.Text = " Вход в систему администрирования сайта службы восстановления данных";
//
// linkLabel1
//
this.linkLabel1.Location = new System.Drawing.Point(40, 224);
this.linkLabel1.Name = " linkLabel1";
this.linkLabel1.Size = new System.Drawing.Size(120, 16);
this.linkLabel1.TabIndex = 9;
this.linkLabel1.TabStop = true;
this.linkLabel1.Text = " www.datarecovery.ru";
this.linkLabel1.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel1_LinkClicked);
//
// linkLabel2
//
this.linkLabel2.Location = new System.Drawing.Point(40, 240);
this.linkLabel2.Name = " linkLabel2";
this.linkLabel2.Size = new System.Drawing.Size(136, 16);
this.linkLabel2.TabIndex = 10;
this.linkLabel2.TabStop = true;
this.linkLabel2.Text = " alexandre@frolov.pp.ru";
this.linkLabel2.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.linkLabel2_LinkClicked);
//
// label5
//
this.label5.Location = new System.Drawing.Point(40, 136);
this.label5.Name = " label5";
this.label5.Size = new System.Drawing.Size(144, 16);
this.label5.TabIndex = 11;
this.label5.Text = " Введите имя и пароль: ";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
this.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(245)), ((System.Byte)(248)), ((System.Byte)(255)));
this.BackgroundImage = ((System.Drawing.Bitmap)(resources.GetObject(" $this.BackgroundImage")));
this.ClientSize = new System.Drawing.Size(362, 271);
this.Controls.AddRange(new System.Windows.Forms.Control[] {
this.label5, this.linkLabel2, this.linkLabel1,
this.label4, this.pictureBox1, this.button2,
this.button1, this.textBox2, this.textBox1,
this.label3, this.label2, this.label1});
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
this.HelpButton = true;
this.Icon = ((System.Drawing.Icon)(resources.GetObject(" $this.Icon")));
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = " Form1";
this.Text = " Идентификация пользователя";
this.ResumeLayout(false);

}
#endregion

/// < summary>
/// The main entry point for the application.
/// < /summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}

private void button1_Click(object sender, System.EventArgs e)
{
MessageBox.Show(" User: " + textBox1.Text + " \n" + " Password: " + textBox2.Text);
}

private void button2_Click(object sender, System.EventArgs e)
{
Close();
}

private void linkLabel1_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
linkLabel1.Links[linkLabel1.Links.IndexOf(e.Link)].Visited = true;
System.Diagnostics.Process.Start(linkLabel1.Text);
}

private void linkLabel2_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
{
linkLabel2.Links[linkLabel2.Links.IndexOf(e.Link)].Visited = true;
System.Diagnostics.Process.Start(" mailto: alexandre@frolov.pp.ru");
}
}
}

Пространства имен

В приложении UserLogin используются те же самые пространства имен, что и в приложении Hello, рассмотренном в предыдущей главе:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

Если у Вас появится необходимость подключения каких-либо других пространств имен, просто добавьте новые операторы using в конец этого списка.

Класс Form1

Приложение UserLogin состоит из одного класса Form1, определенного в пространстве имен UserLogin:

namespace UserLogin
{
public class Form1: System.Windows.Forms.Form
{

}
}

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

Поля класса Form1

Для каждого элемента управления, расположенного в форме, дизайнер форм создает по одному полю соответствующего класса:

private System.Windows.Forms.Label label1;
private System.Windows.Forms.Label label2;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.TextBox textBox1;
private System.Windows.Forms.TextBox textBox2;
private System.Windows.Forms.Button button1;
private System.Windows.Forms.Button button2;
private System.Windows.Forms.PictureBox pictureBox1;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.LinkLabel linkLabel1;
private System.Windows.Forms.LinkLabel linkLabel2;
private System.Windows.Forms.Label label5;

Эти поля хранят ссылки, необходимые для выполнения всех операций с элементами управления формы.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.