Шаг 272.
Язык программирования C#. Начала.
Приложения с графическим интерфейсом. Создание пустого окна

    На этом шаге мы рассмотрим создание такой программы.

    Знакомство с приемами создания приложений с графическим интерфейсом начнем с очень простой программы. При запуске программы на выполнение будет отображаться пустое окно. Окно представлено на рисунке 1.


Рис.1. При запуске программы на выполнение отображается пустое окно

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace pr272_1
{
    // Класс с главным методом: 
    class Class1
    {
        // Атрибут использования однопоточной модели:
        [STAThread]
        // Главный метод: 
        static void Main()
        {
            // Создание объекта окна:
            Form mf = new Form();
            // Заголовок окна: 
            mf.Text = "Простое окно";
            // Высота окна: 
            mf.Height = 200;
            // Ширина окна: 
            mf.Width = 300;
            // Отображение окна:
            Application.Run(mf);
        }
    }
}
Архив проекта можно взять здесь.

    Программа небольшая и содержит всего несколько команд в главном методе. Сначала командой

  Form mf = new Form();
создается объект mf класса Form. Это объект окна. Свойство Text объекта окна "отвечает" за заголовок окна (отображается в строке названия окна). Командой
  mf.Text = "Простое окно";
свойству присваивается значение. Тем самым мы определяем заголовок окна. Высота окна устанавливается равной 200 пикселей. Для этого значение 200 присваивается свойству Height объекта окна mf (команда
  mf.Height = 200;
). Для определения ширины окна (в пикселях) командой
  mf.Width = 300; 
присваиваем значение 300 свойству Width объекта окна mf.

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

  Application.Run(mf);     . 
В ней мы из класса Application (пространство имен System) вызываем статический метод Run(), а в качестве аргумента методу передается объект окна. В результате окно становится видимым, а также запускается стандартный цикл обработки сообщений для приложения. Проще говоря, окно появляется на экране, и пользователь может с ним взаимодействовать.


Принцип выполнения приложений с графическим интерфейсом немного отличается от способа выполнения консольных программ. Консольная программа выполняет команды, а если необходимо, то ожидает действий пользователя (при вводе данных, например). Работа приложения с графическим интерфейсом, по большому счету, связана с тем, что приложение реагирует на действия пользователя. Приложение как бы постоянно проверят, выполнил ли пользователь какие-то действия, и если так, то программа реагирует на эти действия. Такой режим "постоянной проверки" реализуется через цикл обработки сообщений для приложения.

    В заголовке программы подключаются пространства имен System и System.Windows.Forms. Последнее необходимо для того, чтобы классы графических компонентов (в данном случае класс Form) и другие сопутствующие утилиты для реализации графического интерфейса были доступны в программе. Также стоит обратить внимание на наличие атрибута [STAThread] перед описанием метода Main(). Это инструкция, означающая, что при выполнении приложения необходимо использовать однопоточную модель. Программа у нас очень простая. Она будет работать и без этой инструкции. Но мы все же инструкцию [STAThread] используем, и будем ее использовать в следующих примерах.


Инструкция [STAThread] нужна для того, чтобы избежать потенциальных проблем при работе с COM-объектами (COM - это сокращение от Component Object Model). Большинство COM-объектов рассчитаны на работу в однопоточной модели STA (сокращение от Single-Threaded Apartment). Проще говоря, COM-объект должен создаваться и использоваться в едином потоке. Иначе могут возникнуть проблемы. По умолчанию в языке C# используется режим MTA (сокращение от Multi-Threaded Apartment). Атрибут [STAThread] указывается для главного метода программы Main() и представляет собой инструкцию использования однопоточной модели при работе с COM-объектами. Если COM-объекты в программе не используются, то наличие атрибута не имеет видимого эффекта. Создание приложений с графическим интерфейсом подразумевает, что для метода Main() указывается атрибут [STAThread].

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг