Анализ сгенерированного исходного кода 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Анализ сгенерированного исходного кода



Исходный код получившегося на данный момент приложения распределен между тремя файлами Program.cs, Form1.cs и Form1.Designer.cs.

Файл Program.cs - его содержимое совсем небольшое и напоминает код, написанный в «пустом» оконном приложении. Главное в нем – уже знакомый оператор:

Application.Run(new Form1());

Важное отличие – при вызове метода Run используется не стандартный класс Form, а класс Form1. Это производный от Form класс, уже сгенерированный визуальным дизайнером в файлах Form1.cs и Form1.Designer.cs. Эти файлы содержат две «половинки» класса Form1. Такое разделение осуществляется с использованием ключевого слова partial в заголовках класса в обоих файлах:

Файл Form1.cs

public partial class Form1: Form

...

Файл Form1.Designer.cs

partial class Form1

...

Главный вопрос – зачем нужно такое разделение. Это удобно в случае активного использования визуального дизайнера. Файл Form1.cs используется программистом для самостоятельного изменения класса. Содержимое файла Form1.Designer.cs автоматически заполняется кодом, сгенерированным визуальным дизайнером.

В текущем состоянии файл Form1.cs очень короткий:

using System;

//другие необходимые директивы using

public partial class Form1: Form

{

public Form1()

  {

 InitializeComponent();

}

}

Таким образом, в классе Form1 сейчас имеется конструктор, вызывающий метод InitializeComponent. Этот метод содержится в файле Form1.Designer.cs.

Файл Form1.Designer.cs уже сейчас довольно громоздкий. Поэтому при его рассмотрении опустим необязательные подробности. Сначала найдите в этом файле описания переменных класса – они находятся в конце класса Form1:

private System.Windows.Forms.Button button1;

private System.Windows.Forms.Label label1;

private System.Windows.Forms.TextBox textBox1;

Узнаете!? Эти три переменные button1, label1 и textBox1 сгенерированы в ответ на перетаскивание соответствующих элементов из Toolbox на форму.

Кроме того, в классе Form1 определен закрытый метод InitializeComponent:

В начале этого метода для переменных button1, label1 и textBox1 создаются соответствующие объекты:

this.button1 = new System.Windows.Forms.Button();

this.label1 = new System.Windows.Forms.Label();

this.textBox1 = new System.Windows.Forms.TextBox();

Далее для каждого элемента управления происходит установка его свойств. Например, для кнопки button1 это выглядит так:

this.button1.Location = new System.Drawing.Point(92, 52);

this.button1.Name = "button1";

this.button1.Size = new System.Drawing.Size(61, 26);

this.button1.TabIndex = 0;

this.button1.Text = "Делай";

this.button1.UseVisualStyleBackColor = true;

Напомним, что события Click кнопки Button1 был предусмотрен обработчик, который «привязан» к событию оператором:

this.button1.Click += new System.EventHandler(this.button1_Click);

Аналогично выглядит настройка элементов label1 и textBox1.

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

this.Controls.Add(this.textBox1);

this.Controls.Add(this.label1);

this.Controls.Add(this.button1);

В следующем листинге рассмотренная структура программного кода представлена схематично.

Файл Program.cs

class Program

{...

static void Main()

{...

Application.Run(new Form1());

}

}

Файл Form1.cs

public partial class Form1: Form

{ public Form1()

{ InitializeComponent(); }

// обработчики событий

private void button1_Click(object sender, EventArgs e)

{...}

...

}

Файл Form1.Designer.cs

partial class Form1

{...

#region Windows Form Designer generated code

private void InitializeComponent()

{ //создание объектов-элементов управления

this.button1 = new System.Windows.Forms.Button();

this.label1 = new System.Windows.Forms.Label();

this.textBox1 = new System.Windows.Forms.TextBox();

// button1

this.button1.Location = new System.Drawing.Point(192, 23);

...

this.button1.Click += new System.EventHandler(this.button1_Click);

// label1

...

// textBox1

...

// Form1

...

this.Controls.Add(this.textBox1);

this.Controls.Add(this.label1);

this.Controls.Add(this.button1);

}

#endregion

//описание переменных для элементов управления

private System.Windows.Forms.Button button1;

private System.Windows.Forms.Label label1;

private System.Windows.Forms.TextBox textBox1;

}

Далее можно рассмотреть несколько других примеров:

- крестики-нолики.

Дальнейшая логика курса – рассмотрим способы постоянного хранения. Тогда можно будет рассмотреть архитектурные принципы, основанные на разделении на бизнес-логику, визуальный интерфейс и источник данных.

Сохранение результатов

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

1. Файловый ввод-вывод.

2. Механизм сериализации.

3. Базы данных.

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

Работа с файлами – наиболее традиционный способ использования постоянной памяти. Для этого в С# имеется множество классов, содержащихся в пространстве имен System.IO. Классы этого пространства имен можно разбить на 2 категории:

1. Классы, управляющие объектами файловой системы.

2. Классы, использующие потоки.



Поделиться:


Последнее изменение этой страницы: 2021-12-15; просмотров: 46; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.129.23.200 (0.015 с.)