Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Анализ сгенерированного исходного кода
Исходный код получившегося на данный момент приложения распределен между тремя файлами 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 с.) |