|
Можно ли сдавать один и тот же тест несколько раз? |
Библиотека классов .NET Framework среды проектирования Visual Studio .NET. Формы Windows
Приложения-диалоги
Создание формы
Формы Windows реализуются набором классов из пространства имен Systems.Windows.Forms.
Базовым классом для всех окон является класс Form.
Для создания приложения-диалога на языке С++ следует:
- В окне дизайнера создать диалоговую форму. Код, соответствующий создаваемой форме, записывается в файл с расширением .h (например, Form1.h).
- В методе main файла приложения выполнить создание формы вызовом метода Run объекта Application.
// D1.cpp : главный файл проекта.
#include "stdafx.h"
#include "Form1.h" // Файл формы
using namespace D1;
[STAThreadAttribute]
int main(array<System::String ^> ^args)
{ // создание окна формы
Application::Run(gcnew Form1());
return 0;
}Оператор gcnew создает экземпляр управляемого типа. Результатом выполнения данной операции является дескриптор, указывающий на объект управляемого типа. Для объявления переменной типа дескриптора используется операция ^. Доступ к свойствам и методам объекта через дескриптор выполняется операцией ->.
Редактор формы
Редактор формы позволяет в графическом режиме разместить на форме все требуемые элементы управления, определить первоначальное значение свойств этих элементов и создать для них обработчики событий.
При размещении в форме нового элемента управления соответствующий код добавляется в файл формы. Аналогично для задания значения каждого свойства в файл формы добавляется соответствующий 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.
Файл 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"; }
}
}
