- •1. Вводная часть
- •2. Знакомство со средой разработки на примере создания простого консольного приложения
- •3. Модификация консольного приложения
- •4. Публикация
- •5. О приложении к Лабораторной работе № 1
- •Лабораторная работа № 2: Создание простого приложения Windows Forms
- •Создание простого приложения Windows Forms
- •Модификация приложения Windows Forms
- •Завершающая часть
- •2. Создание простого приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Завершающая часть
- •5. О приложении к Лабораторной работе № 2
- •3. Лабораторная работа № 3: Windows Forms и использование некоторых элементов управления Лабораторная работа № 3: Windows Forms и использование некоторых элементов управления
- •Вводная часть
- •О приложении к Лабораторной работе № 3
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Модификация приложения Windows Forms: элемент управления MenuStrip
- •5. Модификация приложения Windows Forms: элемент управления Button
- •6. Модификация приложения Windows Forms: элемент управления ToolTip
- •7. Модификация приложения Windows Forms: элемент управления ComboBox
- •8. Модификация приложения Windows Forms: элемент управления WebBrowser
- •9. Модификация приложения Windows Forms: добавляем исходный код
- •10. Завершающая часть
- •11. О приложение к Лабораторной работе № 3
- •4. Лабораторная работа № 4: Windows Forms — работа с формами Лабораторная работа № 4: Windows Forms — работа с формами
- •Вводная часть
- •О приложении к Лабораторной работе № 4
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Модификация приложения Windows Forms: добавление новой формы
- •5. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через прямой доступ к элементу формы
- •6. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через передачу метода в конструктор формы
- •7. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через класс делегата
- •8. Модификация приложения Windows Forms: динамическое связывание параметров двух форм и передача параметра через свойства
- •9. Завершающая часть
- •10. О приложении к Лабораторной работе № 4
- •5. Лабораторная работа № 5: Windows Forms — элементы управления Лабораторная работа № 5: Windows Forms — элементы управления
- •Вводная часть
- •О приложении к Лабораторной работе № 5
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms
- •4. Модификация приложения Windows Forms: динамическое добавление и уничтожение элемента управления
- •5. Модификация приложения Windows Forms: стандартные диалоговые окна
- •6. Модификация приложения Windows Forms: открытие файла, сохранение файла и работа с текстом
- •7. Модификация приложения Windows Forms: прочее
- •8. Завершающая часть
- •9. О приложении к Лабораторной работе № 5
- •Лабораторная работа № 6: SolidWorks — работа с SolidWorks
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: eDrawings 2012
- •4. Модификация приложения Windows Forms: организация работы с SolidWorks через приложение
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 6
- •Лабораторная работа № 7: SolidWorks — использование SwCSharpAddin, работа с макросом и шаблоном детали
- •2. Создание приложения SwCSharpAddin
- •3. Модификация приложения SwCSharpAddin: макрос отрисовки болта
- •4. Модификация приложения SwCSharpAddin: построение через шаблон детали
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 7
- •8. Лабораторная работа № 8: Создание простого приложения Windows Foundation Presentation Лабораторная работа № 8: Создание простого приложения Windows Foundation Presentation
- •Вводная часть
- •О приложении к Лабораторной работе № 8
- •1. Вводная часть
- •2. Создание приложения Windows Foundation Presentation
- •3. Модификация приложения Windows Foundation Presentation
- •4. Модификация приложения Windows Foundation Presentation: добавление нового элемента из библиотеки компонентов wpf
- •5. Модификация приложения Windows Forms: расширение функциональности приложения и работа с оформление
- •6. Модификация приложения Windows Foundation Presentation: различные возможности wpf
- •7. Модификация приложения Windows Foundation Presentation: немного о стилях и шаблонах
- •8. Завершающая часть
- •9. О приложении к Лабораторной работе № 8
- •Лабораторная работа № 9: Создание приложения-презентации Windows Foundation Presentation
- •2. Создание приложения Windows Foundation Presentation
- •3. Модификация приложения Windows Foundation Presentation
- •4. Модификация приложения Windows Foundation Presentation: работа с решением в Expression Blend
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 9
- •Лабораторная работа № 10: Работа с базами данных — xml и ole
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: odbc
- •4. Модификация приложения Windows Forms: ole
- •5. Модификация приложения Windows Forms: xml
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 10
- •Лабораторная работа № 11: Динамическая связь приложений через библиотеку классов
- •2. Удалённый объект: создание библиотеки классов удалённого объекта
- •3. Клиент: создание приложения Windows Forms
- •4. Сервер: создание консольного приложения
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 11
- •Лабораторная работа № 12: Автоматизация Microsoft Office Word
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: создание и заполнение нового документа Microsoft Word
- •4. Модификация приложения Windows Forms: работа с шаблонами
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 12
- •Лабораторная работа № 13: Автоматизация Microsoft Office Excel
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: создание и заполнение нового документа Microsoft Excel
- •4. Модификация приложения Windows Forms: чтение данных с документа Microsoft Excel
- •5. Модификация приложения Windows Forms: прочие возможности Microsoft Excel
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 13
- •Лабораторная работа № 14: Простой растровый редактор
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: подготовка интерфейса редактора
- •4. Модификация приложения Windows Forms: функциональность растрового редактора
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 14
- •15. Лабораторная работа № 15: Векторный редактор изображений Лабораторная работа № 15: Векторный редактор изображений
- •Вводная часть
- •О приложении к Лабораторной работе № 15
- •1. Вводная часть
- •2. Создание решения, приложения Windows Forms и библиотеки классов
- •3. Модификация приложения Windows Forms: подготовка интерфейса редактора и добавление файлов ресурсов
- •4. О будущей функциональности векторного редактора изображений
- •5. Модификация приложения Windows Forms: подготовка библиотеки классов
- •6. Модификация приложения Windows Forms: функциональность векторного редактора
- •7. Завершающая часть
- •8. О приложении к Лабораторной работе № 15
- •Лабораторная работа № 16: Windows Communication Foundation
- •2. Создание приложения wcf:
- •3. Модификация приложения wcf: приложение-клиент для wcf-службы
- •4. Создание приложения Windows Forms: сервер чата на wcf
- •5. Создание приложения Windows Forms: клиент чата на wcf
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 16
- •Лабораторная работа № 17: Знакомство с Silverlight
- •2. Создание приложения Silverlight:
- •3. Модификация приложения Silverlight: первые шаги и полноэкранный режим
- •4. Модификация приложения Silverlight: простой проигрыватель mp3-файлов
- •5. Модификация приложения Silverlight: работа с анимацией
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 17
- •Лабораторная работа № 18: Знакомство с asp.Net
- •2. Создание веб-приложения asp.Net
- •3. Модификация веб-приложения asp.Net: реализация различной функциональности
- •4. Модификация веб-приложения asp.Net: ajax
- •5. Завершающая часть
- •6. О приложении к Лабораторной работе № 18
- •Вводная часть
- •О приложении к Лабораторной работе № 19
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: подготовка интерфейса и добавление TabControl
- •4. Модификация приложения Windows Forms: вкладка «Просто фон!»
- •5. Модификация приложения Windows Forms: вкладка «Объекты и градиент»
- •6. Модификация приложения Windows Forms: вкладка «Мой монитор сломался!»
- •7. Модификация приложения Windows Forms: вкладка «Векторные часы»
- •8. Модификация приложения Windows Forms: вкладка «Огонь!!!»
- •9. Модификация приложения Windows Forms: вкладка «Дождик»
- •10. Завершающая часть
- •11. О приложении к Лабораторной работе № 19
- •Лабораторная работа № 20: Inventor — работа с Inventor
- •Вводная часть
- •О приложении к Лабораторной работе № 20
- •1. Вводная часть
- •2. Создание приложения Windows Forms
- •3. Модификация приложения Windows Forms: запуск и завершение приложения Inventor
- •4. Модификация приложения Windows Forms: создание новых документов
- •5. Модификация приложения Windows Forms: доступ к элементам документов Inventor
- •6. Завершающая часть
- •7. О приложении к Лабораторной работе № 20
- •Лабораторная работа № 21: Знакомство с языком f# (Эф-шарп) на примере простого приложения для командной строки
- •Вводная часть
- •О приложении к Лабораторной работе № 21
- •1. Вводная часть
- •2. Основные положения при работе с f#
- •3. Создание приложения «Учебник по f#»
- •4. Создание консольного приложения
- •5. О приложении к Лабораторной работе № 21
- •Лабораторная работа № 22: Различные примеры на f#
- •2. Создание приложения «Приложение f#»
- •3. Модификация приложения f#: match
- •4. Модификация приложения f#: создание форм и рисование объектов на форме
- •5. Модификация приложения f#: работа с базой данных Microsoft Access
- •6. О приложении к Лабораторной работе № 22
- •23. Дополнительная лабораторная работа № 1
- •24. Дополнительная лабораторная работа № 2
- •25. Дополнительная лабораторная работа № 3
- •Вводная часть
- •1. Вводная часть
- •2. Создание приложения Windows Foundation Presentation
- •3. Модификация приложения Windows Foundation Presentation: добавление ресурсов
- •4. Модификация приложения Windows Foundation Presentation: добавление исходного кода
- •5. Модификация приложения Windows Foundation Presentation: оформление элемента ListBox
- •6. Завершающая часть
- •7. О приложении к данной работе
4. Завершающая часть
Компилируем приложение (Release) и запускаем. Результат работы показан ниже (Рис. 4. 1):
Рис. 4. 1. Модифицированное приложение Windows Forms
Поясним исходный код, а точнее принцип работы кода. Ключевые слова подсвечены синим. Типы CLR (Common Language Runtime) таким цветом6.
ПРИМЕЧАНИЕ № 6: Отметим ещё раз, что разницы между string и String нет. В первом случае это обозначение переменной как ключевого слова (это alias для String). Во-вторых мы имеем дело с общепринятым типом CLR для разных языков .NET.
Основной рабочий файл, который был отредактирован нами это файл LPW02Main.cs (перейти к исходному коду можно нажав на него правой кнопкой мышки и выбрав в раскрывающемся меню пункт Перейти к коду либо нажав клавишу F7 после выделении мышкой). Файл начинается стандартно, с подключения ссылок и задания пространства имён. Дальше идёт объявления класса (LWP02Main) и типа формы (Form) (класс по ключевому слову partial:
namespace LWP02WindowsForms01
{
public partial class LWP02Main : Form
{
Boolean Operation1 = false;
Boolean Operation2 = false;
Boolean Operation3 = false;
Boolean Operation4 = false;
Boolean Clear = false;
Double A;
Double B;
Double Result;
Boolean Dot = false;
public LWP02Main()
{
InitializeComponent();
}
Касательно ключевого слова partial. В языке C# возможно разбиение определения класса, структуры или интерфейса между двумя или больше исходными файлами. Каждый исходный файл содержит свою часть определения класса и все такие части собираются во время компиляции.
Есть несколько ситуаций, когда удачно разбить определение класса на несколько файлов:
При работе над большим проектом, разбиение класса на несколько файлов позволяет нескольким программистам работать над ним одновременно.
При работе с автоматически генерируемыми исходными кодами, код может быть добавлен в класс без необходимости пересоздавать исходный файл. Visual Studio использует этот подход при создании компонентов Windows Forms, веб-сервисов и прочее. Возможно создать код, который использует эти классы без необходимости редактировать файлы, которые создает Visual Studio.
Для такого разбития класса используется модификатор partial.
Дальше основной метод нашей формы (LWP02Main) и вложенный в него метод InitializeComponent(). Это автоматически подставляемый обязательный метод для поддержки конструктора класса. Фактически конструктор всех компонентов формы. Можно просмотреть содержимое метода в другом файле (об этом ниже).
Далее идёт объявление переменных. Всего их 9, шесть из которых имеют логический тип («правда» или «ложь»), оставшиеся три — тип double7 (приблизительный диапазон чисел от ±5,0 x 10−324 до ±1,7 x 10308). Переменные A и B служат для хранения временного слагаемого. Result для хранения результата вычисления.
ПРИМЕЧАНИЕ № 7: Ключевое слово double обозначает простой тип, используемый для хранения 64-разрядных значений с плавающей запятой.
Все логические переменные служат для «переключателей» во время работы программы. И регулируют работы всех кнопок.
К примеру при нажатии на кнопку операции «сложения» флаг Operation1 переходит из false в true, и далее программа выполняет именно сложение (все остальные флаги остаются false).
private void B0_Click(object sender, EventArgs e)
{
if (Clear == true)
{
ResultBox.Clear();
Clear = false;
Dot = false;
}
if (Operation1 == false && Operation2 == false && Operation3 == false && Operation4 == false)
{
ResultBox.AppendText("0");
A = Convert.ToDouble(ResultBox.Text.Replace(".", ","));
}
else
{
ResultBox.AppendText("0");
B = Convert.ToDouble(ResultBox.Text.Replace(".", ","));
}
}
Это метод нажатия кнопки «0». В самом начале во время события нажатия, идёт проверка на переменную Clear. Если она true, происходит очистка текстового поля, после чего состояние «очистки» отключается вместе с состоянием нажатия кнопки «точка».
Дальше идёт проверка на нажатие кнопок математических операций. Если кнопки не нажаты, то вводимое в поле число будет отправлено в переменную A. Точнее при нажатии кнопки «0» в этом случае к тексту хранимому в данный момент в ResultBox.Text добавляется ещё один нуль. После чего идёт проверка на символы «.» (точка) и замена его символом «,» (запятая). В завершении вся строка конвертируется из String в Double и полученное значение отправляется в переменную A. Если же нажата кнопка какой-либо операции, все введённые цифры присваивается переменной B.
private void BOperation1_Click(object sender, EventArgs e)
{
Operation1 = true;
Operation2 = false;
Operation3 = false;
Operation4 = false;
ResultBox.Clear();
}
Кнопка операции «сложения». Здесь реализована защита от ввода неверных данных, так как используется одно и тоже поле для ввода двух разных чисел. После нажатия кнопки операции «сложения», поле очищается, а флаги переходят в нужное состояние.
private void BD_Click(object sender, EventArgs e)
{
if (Clear == true)
{
ResultBox.Clear();
Clear = false;
Dot = false;
}
if (Operation1 == false && Operation2 == false && Operation3 == false && Operation4 == false)
{
if (Dot == false)
{
ResultBox.AppendText(",");
Dot = true;
}
}
else
{
if (Dot == true)
{
ResultBox.AppendText(",");
Dot = false;
}
}
}
Кнопка «точка». Идентична кнопкам цифр, за исключением поведения при нажатии. Изначально переменная Dot в состоянии false. Если мы вводим в переменную A, нажатие кнопки «точка» меняет Dot на true. После этого в текстовое поле добавляется собственно знак «точки». И здесь срабатывает механизм замены. После этого дальнейшие нажатия не дадут эффекта и лишняя точка не будет введена (и не будет выдана ошибка).
Если же математическая операция уже выбрана, то Dot переведена в состояние true и сработает последняя часть метода. Опять же нажать «точку» можно лишь один раз.
private void BResult_Click(object sender, EventArgs e)
{
if (Operation1 == true)
Result = A + B;
if (Operation2 == true)
Result = A - B;
if (Operation3 == true)
Result = A * B;
if (Operation4 == true)
Result = A / B;
ResultBox.Text = Result.ToString();
Operation1 = false;
Operation2 = false;
Operation3 = false;
Operation4 = false;
Clear = true;
}
Кнопка «вычисление» производит основное действия по вычислению в зависимости от выбранной операции, а также от содержания переменных A и B. Если просто нажать кнопку математической операции, переменная A будет содержать нуль. Но на ноль поделить нельзя. Результат будет забавным (ошибка выдана не будет, что примечательно). Основная операция по выводу результата это конвертирование переменной Result обратно в String.
Кнопка «Округлить» пояснена в комментариях к кода события Click для кнопки.
Теперь немного остановимся на файле (LWP02Main.Designer.cs). Это и есть пресловутый конструктор формы. Точнее файл с настройками формы.
Большая часть кода генерируется средой разработки автоматически:
Рис. 4. 2. Содержимое файла LWP02Main.Designer.cs
/// <summary>
/// Требуется переменная конструктора.
/// </summary>
private System.ComponentModel.IContainer components = null;
Здесь (строчка выше) держатся все компоненты формы. Генерируется автоматически. Если компонент не используется, и никто на него не ссылается, включается в работу метод Dispose() и удаляет, сбрасывает или высвобождается неуправляемый ресурс.
/// <summary>
/// Освободить все используемые ресурсы.
/// </summary>
/// <param name="disposing">истинно, если управляемый ресурс должен быть удален; иначе ложно.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
Собственном метод Dispose(). Вызывается в случае необходимости уничтожения управляемого ресурса.
#region Код, автоматически созданный конструктором форм Windows
/// <summary>
/// Обязательный метод для поддержки конструктора - не изменяйте
/// содержимое данного метода при помощи редактора кода.
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LWP02Main));
this.ResultBox = new System.Windows.Forms.TextBox();
this.B1 = new System.Windows.Forms.Button();
…
#endregion
Как уже было сказано, этот код генерируется автоматически. По большей части это создание экземпляров определённых ресурсов и изменение их свойств, такие как позиция, имена, размеры и прочее. Это «конструктор» всех компонентов формы, которые пользователь установил при помощи визуального редактора. Разумеется, добавлять новый компоненты (кнопки, текстовые поля, DataGridView’ы и другое) можно добавлять «руками», прописывая всё то что делает конструктор автоматически. Зачастую, ручное добавлением элементов управления и настройку их можно увидеть в «одно файловых» проектах (где код помещён в один файл *.cs). Единственное что можно сказать о преимуществе визуального конструктора формы — это его наглядность и несомненное удобство.
И наконец, обратимся к файлу Program.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
namespace LWP02WindowsForms01
{
static class Program
{
/// <summary>
/// Главная точка входа для приложения.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new LWP02Main());
}
}
}
Можно сказать, здесь использован стандартный шаблон. В этом файле содержится точка входа в программу (static void Main()). Две строчки ниже относится к инициализации визуального стиля для приложения и установки значений по умолчанию для определенных элементов управления программы. Сам запуск и инициализация формы выполняется здесь:
Application.Run(new LWP02Main());