Редактор формы
Редактор формы позволяет в графическом режиме разместить на форме все требуемые элементы управления, определить первоначальное значение свойств этих элементов и создать для них обработчики событий.
При размещении в форме нового элемента управления соответствующий код добавляется в файл формы. Аналогично для задания значения каждого свойства в файл формы добавляется соответствующий set-метод. Методы-обработчики событий также помещаются в файл формы.
Следующий код представляет файл формы для формы, в которую добавлено два элемента управления - поле ввода и командная кнопка:
namespace D1 { // Подключение используемых пространств имен using namespace System; using namespace System::ComponentModel; using namespace System::Collections; using namespace System::Windows::Forms; using namespace System::Data; using namespace System::Drawing; // ref class объявляет управляемый класс C++ public ref class Form1 : public System::Windows::Forms::Form { public: Form1(void){InitializeComponent();} protected: ~Form1(){if (components) {delete components;}} // Объявление элемента управления "кнопка": private: System::Windows::Forms::Button^ button1; // Объявление элемента управления // "поле ввода": private: System::Windows::Forms::TextBox^ textBox1; // Объявление контейнера private:System::ComponentModel::Container ^components;
#pragma region Windows Form Designer generated code // Формируется дизайнером формы void InitializeComponent(void) { // Создание объекта "кнопка": this->button1 = (gcnew System::Windows::Forms::Button()); // Создание объекта "поле ввода": this->textBox1 = (gcnew System::Windows::Forms::TextBox()); this->SuspendLayout(); // Временно // приостанавливает события компоновки до // вызова метода ResumeLayout или // Задание свойств для кнопки button1 this->button1->Location = System::Drawing::Point(427, 22); this->button1->Name = L"button1"; this->button1->Size = System::Drawing::Size(75, 23); this->button1->TabIndex = 0; this->button1->Text = L"button1"; this->button1->UseVisualStyleBackColor = true; // Определение обаботчика события Click для кнопки this->button1->Click += gcnew System::EventHandler( this, &Form1::button1_Click); // Задание свойств для поля ввода textBox1 this->textBox1->Location = System::Drawing::Point(80, 25); this->textBox1->Name = L"textBox1"; this->textBox1->Size = System::Drawing::Size(100, 20); this->textBox1->TabIndex = 1; // Задание свойств для формы Form1 this->AutoScaleDimensions = System::Drawing::SizeF(6, 13); this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font; this->ClientSize = System::Drawing::Size(548, 266); ..// Добавление в форму элементов управления this->Controls->Add(this->textBox1); this->Controls->Add(this->button1); this->Name = L"Form1"; this->Text = L"Form1"; this->ResumeLayout(false); this->PerformLayout(); } #pragma endregion // Обработчик события для кнопки private: System::Void button1_Click( System::Object^ sender, System::EventArgs^ e) {this->textBox1->Text = L"123456"; } }; // Конец реализации класса } // Конец пространства имен D1
Листинг 23.1.
При создании проекта приложения для языка C# сразу создается диалоговая форма. Автоматически формируемое приложение включает в себя файлы, приведенные на рис. 23.1.
Рис. 23.1. Файлы проекта для C#
Файл Program.cs - это главный файл приложения, содержащий метод main. В этот файл по умолчанию вставляется следующий код:
using System; using System.Collections.Generic; using System.Windows.Forms;
namespace D_1 { static class Program { [STAThread] static void Main() { Application.EnableVisualStyles(); // Разрешает использовать для элементов управления визуальные стили. Метод должен быть вызван до добавления в форму элементов управления // Метод введен для .NET Framework version 2.0.: Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1()); // Создание формы } } }
Файл Forms.Designer.cs содержит код метода InitializeComponent, в котором к окну формы добавляются все элементы управления и происходит настройка их свойств.
Также в данный файл помещается код объявления элементов управления, размещаемых в форме:
namespace D_1 {partial class Form1 { private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (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() { this.button1 = new System.Windows.Forms.Button(); this.textBox1 = new System.Windows.Forms.TextBox(); this.SuspendLayout(); // Элемент управления button1 this.button1.Location = new System.Drawing.Point(188,27); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 0; this.button1.Text = "button1"; this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.button1_Click); // Элемент управления textBox1 this.textBox1.Location = new System.Drawing.Point(42, 30); this.textBox1.Name = "textBox1"; this.textBox1.Size = new System.Drawing.Size(100, 20); this.textBox1.TabIndex = 1; // Окно формы Form1 this.AutoScaleDimensions = // Определяет размер // окна как ширина и высота (тип float) new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(292, 266); this.Controls.Add(this.textBox1); this.Controls.Add(this.button1); this.Name = "Form1"; this.Text = "Form1"; this.ResumeLayout(false); this.PerformLayout(); // Заставляет элемент // управления выполнить для всех дочерних // элементов компановку в соответствии // с их свойствами } #endregion // Объявление переменных private System.Windows.Forms.Button button1; private System.Windows.Forms.TextBox textBox1; } }
Листинг 23.2.
Файл Forms.cs содержит описание всех добавляемых пользователем методов обработки событий ( переход между окном кода и окном дизайнера для формы может быть выполнен вызовом команды контекстного меню View Code или View Designer).
Для окна формы с двумя элементами управления - командная кнопка и поле ввода, и методом обработки события Click файл Forms.cs может содержать следующий код:
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace D_1 { public partial class Form1 : Form { public Form1() // Конструктор { InitializeComponent(); // Метод определен //в файле Forms.Designer.cs } private void button1_Click(object sender,EventArgs e) { this.textBox1.Text = "123456789"; } } }