Windows Forms: элементы управления

Создание приложения с различными элементами управления и демонстрацией их основной функциональности на простых примерах. Модификация приложения WindowsForms: динамическое добавление и уничтожение элемента управления. Пример добавления изображения.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 08.04.2017
Размер файла 2,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru//

Размещено на http://www.allbest.ru//

Лабораторная работа № 5: Windows Forms-- элементы управления

1. Вводная часть

В этой работе будет рассмотрено несколько новых элементов управления, которые ещё не были рассмотрены, но с которыми рано или поздно придётся столкнуться и некоторые особенности по работе с ними. Элементы управления, это 50% успеха программы (остальные 50% это её оформление…). Красивая программа зачастую больше ценится, чем более функциональная, но содержащая невзрачный, недружелюбный к пользователю интерфейс.

С каждым выпуском VisualStudio (и в частности «фреймворков»), стандартных элементов для использования становится только больше, что неудивительно. Также, на данный момент энтузиастами-программистами написано множество новых элементов управления с различной функциональностью, подчас очень удобной.

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

Динамическое создание элемента управления.

Получение доступа к элементу управления по его имени.

Уничтожение элемента управления.

Поиск по однотипным элементам управления.

Создание массива элементов управления.

Работа со стандартными диалоговыми окнами Windows (окно выбора цвета, выбора шрифта и прочее).

Организация функциональности текстового расширенного редактора (формат сохранения RichTextFormat) и подключение возможности сохранения и открытия файлов.

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

2. Создание приложения Windows Forms

приложение изображение windows forms

Запускаем Visual Studio 2010, откроется Начальная страница:

Для начала, надо создать проект, для этого выполним последовательно: Файл ->Создать ->Проект… (также можно просто нажать сочетание клавиш Ctrl+Shift+N или пункт «Создать проект…» на Начальной странице):

Рис. 2. 1. Создание нового проекта

Выберем слева в пункте Установленные шаблоны язык VisualC#, далее найдём в списке Приложение WindowsForms. Также здесь можно выбрать какой использовать «фреймворк» (набора компонентов для написания программ). В нашем случае выберем .NET Framework 4.

Рис. 2. 2. Окно создания нового проекта

В поле Имя вводим LWP05WindowsForms04-- это название программы (выбрано по названию лабораторного практикума, номеру и названию работы). В поле Расположение указана конечная директория, где будет находиться весь проект. Выберем расположение удобное для быстрого поиска. В поле Имя решения вводится либо название программы «по умолчанию» из поля Имя автоматически, либо можно ввести своё собственное. Под этим именем будет создана конечная папка проекта (если Имя и Имя решения разные).

Рис. 2. 3. Вводим данные нового проекта приложенияWindowsForms

После нажатия клавиши ОК, мы увидим сформированный проект и исходный код приложения WindowsForms (не пустого изначально).

Рис. 2. 4. Обозреватель решений: состав проекта приложения WindowsForms сформированного средой разработки

Теперь, можно откомпилировать созданную программу, нажав клавишу F5 ( Отладка ->Начать отладку или нажав на иконку. Тем самым мы запускаем приложение в режиме отладки (и производим компиляцию debug-версии программы) (Debug выбрано изначально).

Рис. 2. 5. Запуск приложения WindowsForms по конфигурации Debug

3. Модификация приложения WindowsForms

Для начала изменим размер нашей единственной формы. Для этого можно потянуть за уголок в нужном направлении на странице визуального представления формы1. Но также размер можно менять на панели свойств этой формы. Для этого нужно поменять значение размера в пикселях (высоту и ширину) в поле Size.

ПРИМЕЧАНИЕ № 1: Для перехода на визуальное представление формы, необходимо двойным нажатием в обозревателе решений нажать на значок формы () или выбрать вкладку на панели вкладок с именем <имя формы>.cs [Конструктор].

Задаём следующие параметры формы на панели Свойства:

(Name)

изменим с Form1.cs2 на LWP05Main

^ Поменяем внутреннее имя формы.

Text

изменим с Form1 на Элементы управления (C#)

^ Поменяем заголовок формы (то что отображается в шапке приложения слева).

Icon

изменим изображение (иконку) приложения

^ Необходим файл значка *.ico.

Size

изменим со значений 300; 300 на 640; 480

^Поменяем размер формы.

ПРИМЕЧАНИЕ № 2: Для того, чтобы поменять имя файла нашей формы, необходимо выполнить следующее: выделить в обозревателе решений значок формы () и нажать правую кнопку мыши, затем выбрать Переименовать. Ввести необходимое новое имя, СОХРАНЯЯ расширение *.cs. После смены имени, автоматически поменяются имена проассоциированных непосредственно с формой файлов:

Получим нечто подобное:

Рис. 3. 1. Модифицированная форма приложения

Добавим на нашу форму ToolTip ().

Параметры добавленного элемента всплывающей подсказки таковы:

(Name):

Hint

4. Модификация приложения WindowsForms: динамическое добавление и уничтожение элемента управления

Расставим первую группу элементов. Наша цель, по нажатию кнопки, в определённом месте получить новую (созданную) кнопку и добавить для неё событие нажатия, которое выполнит изменение текста кнопки. Также добавим кнопку по уничтожению этой добавленной кнопки. И, наконец, добавим кнопку, которая автоматически добавит массив однотипных текстовых полей.

Расставим первую группу следующим образом:

Рис. 4. 1. Начальная расстановка элементов

Здесь у нас есть такие элементы как MenuStrip (меню сверху), GroupBox (рамка с текстом), кнопки Button, NumericUpDown (элемент «ползунка») и элемент StatusStrip (отдельное поле внизу).

Рис. 4. 2. Панель элементов: NumericUpDown

Рис. 4. 3. Панельэлементов: StatusStrip

MenuStrip:

(Name):

MainMenu

ToolTip на Hint:

Меню

Первый главный пункт:

Файл

Первый всплывающий пункт:

вводим произвольное имя, далее выделяем этот пункт меню, жмём по нему правую кнопку мыши и выбираем Преобразовать в ->Separator

Второй всплывающий пункт:

Выход

Рис. 4. 4. Типы для пункта меню (текущий выделенный элемент 1: преобразуем в Separator)

Событие Click пункта меню Выход:

privatevoidвыходToolStripMenuItem_Click(object sender, EventArgs e)

{

Close();

}

Добавим «горячую» клавишу. Для этого выделим элемент меню и войдём в его свойства. Ищем там пункт ShortcutKeys. Выставляем галочку в Ctrl(Модификаторы), и ищем в списке Клавиши нужную: E:

Добавим также отображение текстовой строки для будущей строки состоящая. В поле ShortcutKeyDislpayString впишем: Ctrl+E.

Теперь нажатие выбранного сочетания Ctrl+E приведёт к закрытию приложения (сочетание клавиш имитирует нажатие пункта меню Выход и соответственно выполнения события нажатия).

Выберем для StatusStrip отображаемый тип, в который будем заносить что-либо. Например, мы хотим сделать из него элемент строки состояния (отображающий текст подсказки внизу и индикатор выполнения прохождения процесса). Для этого выделим элемент, нажмём символ «стрелки вниз» и выберем сначала StatusLabel, затем ProgressBar (после добавления элемента, «чистый» макет появится справа).

Рис. 4. 4. Добавление нового элемента для строки состояния

StatusStrip

(Name):

MainStatus

ToolTip на Hint:

Строкасостояния

StatusLabel

(Name):

StatusLabel

Text:

<пусто>

PrgoressBar

(Name):

StatusProgressBar

Организуем вывод подсказки в строке состояния для кнопки Выход. Для этого инициализируем событие MouseEnter(ожидание получения фокуса). Код события модифицируем:

privatevoidвыходToolStripMenuItem_MouseEnter(object sender, EventArgs e)

{

StatusLabel.Text = выходToolStripMenuItem.Text + " (" + выходToolStripMenuItem.ShortcutKeyDisplayString + ")";

}

При потере фокуса с элемента организуем стандартное обнуление строки состояния. Событие MouseEnter для всей формы (выделяем заголовок формы для перехода к свойствам формы):

privatevoid LWP05Main_MouseEnter(object sender, EventArgs e)

{

StatusLabel.Text = "";

StatusProgressBar.Value = 0;

}

ИсобытиеMouseLeaveпунктаменюВыход:

privatevoidвыходToolStripMenuItem_MouseLeave(object sender, EventArgs e)

{

StatusLabel.Text = "";

}

Добавим визуальный эффект. При нажатии на кнопку выход приложение будет замирать на секунду. И в строке состояния будет заполняться индикатор прогресса на 100%. После этого приложение закроется.

Добавим таймер с панели элементов:

Меняем его свойства:

Timer

(Name):

TimerOneSecond

Interval:

1000

^ Интервал между событиями Elapsed в миллисекундах.

Единственное событие таймера инициализируем двойным нажатием на иконку таймера в конструкторе форм (Tick) и модифицируем:

privatevoid TimerOneSecond_Tick(object sender, EventArgs e)

{

Close();

}

Модифицируем событие нажатия кнопки Выход:

privatevoidвыходToolStripMenuItem_Click(object sender, EventArgs e)

{

TimerOneSecond.Start(); // Запускаемтаймер

TimerOneSecond.Tick += newEventHandler(TimerOneSecond_Tick); // Прошласекунда: генерируемсобытие "одинтакт" таймера

StatusProgressBar.Maximum = 100; // Устанавливаем максимум для индикатора

StatusProgressBar.Value = 100; // Переводим текущее значение на максимум

}

Компилируем, проверяем работоспособность. Индикатор заполняется после нажатия кнопки, затем через секунду приложение закрывается. При наведении на пункт меню отображаются все подсказки.

Основы «украшательств» мы разобрали. Теперь перейдём к кнопкам. Начнём с кнопки Добавить:

Button (Добавить)

(Name):

button1

Text:

Добавить

ToolTip на Hint:

Добавить элемент управления

СобытиеClickкнопкиДобавить:

privatevoid button1_Click(object sender, EventArgs e)

{

System.Windows.Forms.Button NewButton = new System.Windows.Forms.Button(); // Создаёмкнопку

NewButton.Location = new System.Drawing.Point(17, 70); // Устанавливаемнеобходимыесвойства

NewButton.Name = "NewButton"; // Устанавливаемимякнопки

NewButton.Size = new System.Drawing.Size(237, 23); // Устанавливаемразмеркнопки

NewButton.TabIndex = 0; // Порядок переключение по клавише Tab

NewButton.Text = "NewButton"; // Устанавливаем текст на кнопке

NewButton.UseVisualStyleBackColor = true; // Устанавливаем способ отрисовки (стандартный)

NewButton.Click += new System.EventHandler(NewButton_Click); // button1_Click - функция обработчик события нажатия на кнопку

Controls.Add(NewButton); // Добавляем на форму

NewButton.BringToFront(); // Помещаем элемент на передний план

button2.Enabled = true; // Включаем кнопку Удалить

}

Получаем доступ к элементу управления по его имени, для того чтобы поменять текст на добавленной кнопке по её нажатию. Добавляем следующий код после кода события Click:

privatevoidNewButton_Click(objectsender, EventArgse)

{

/* Получаем доступ к элементу управления по его имени */

(Controls["NewButton"] asButton).Text = "Ура, заработало!";

}

Кнопка Удалить:

Button (Удалить)

(Name):

button2

Text:

Удалить

ToolTip на Hint:

Удалить элемент управления

Enabled:

False

^ Выключаем кнопку изначально.

Событие Click кнопки Удалить:

privatevoid button2_Click(object sender, EventArgs e)

{

Controls.Remove((Controls["NewButton"] asButton)); // Удаляемсформыкнопку NewButton

//(Controls["NewButton"] as Button).Dispose(); // Освобождаемресурсызанятыекнопкой

}

Вторая строчка закомментирована по причине того, что уничтожение виртуального объекта невозможно. Нужно уничтожать конкретный объект либо очистить все ссылки на объект, тогда он будет уничтожен сборщиком мусора. Для этого вставим ещё одну кнопку (button4):

Пусть она выполняет функции выхода из приложения.

Удалим эту кнопку по нажатию на Удалить:

privatevoid button2_Click(object sender, EventArgs e)

{

Controls.Remove((Controls["NewButton"] asButton)); // Удаляем с формы кнопку NewButton

//(Controls["NewButton"] as Button).Dispose(); // Освобождаемресурсызанятыекнопкой

Controls.Remove(button4);

button4.Dispose();

button2.Enabled = false; // Выключаем кнопку после завершения операций уничтожения кнопок

}

Кнопка Массив:

Button (Массив)

(Name):

button3

Text:

Массив

ToolTip на Hint:

Добавить массив элементов управления (число выбираем справа)

Элемент числового ползунка:

NumericUpDown

(Name):

NumericButtons

Maximum:

3

^ Максимальное число

Mininum:

1

^Минимальное число

Increment:

1

^Шаг.

Событие Click кнопки Массив3, 4:

privatevoid button3_Click(object sender, EventArgs e)

{

StatusProgressBar.Value = 0; // Сбрасываеминдикаторпринажатии

StatusProgressBar.Step = 34; // Задаём шаг для индикатора (делим на 3 части 100)

TextBox[] TB = newTextBox[Convert.ToInt32(NumericButtons.Value)]; // Объявляем массив элементов управления по числву выбранному в NumericButtons

for (int i = 0; i < TB.Length; i++) // Организуем цикл по числу элементов массива

{

StatusProgressBar.PerformStep(); // Увеличиваем значение индикатора

TB[i] = new System.Windows.Forms.TextBox(); // Создаём элемент i

TB[i].Location = new System.Drawing.Point(365 + i * 80, 50); // Позицияэлемента i

TB[i].Name = "textBox" + i.ToString(); // Заполняемэлемент i

TB[i].Size = new System.Drawing.Size(75, 23);

TB[i].TabIndex = i;

TB[i].Text = "textBox" + i.ToString();

Controls.Add(TB[i]);

TB[i].BringToFront();

StatusLabel.Text = "Массив элементов управлений успешно создан (" + StatusProgressBar.Value + "%)"; // выводим текст в строку состояния

}

}

ПРИМЕЧАНИЕ № 3: Вообще, для того, чтобы динамически добавить какой-то элемент не нужно знать всех его параметров изначально (только если это не ваш собственный элемент управления). Добавляем такой же элемент управления, настраиваем как надо и смотрим код конструктора для этого элемента в файле <имя формы>.desinger.cs.

ПРИМЕЧАНИЕ № 4: Поиск в элементах управления можно реализовать через массив всех элементов определённого типа. Эти элементы, в которых нужно вести поиск и замену должны существовать.

Пример реализации поиска текста в однотипных элементах управления типа TextBox (можно сделать отдельной кнопкой):

foreach (Control control in Controls)

{

TextBox TB = control asTextBox;

if (TB != null) // Если элемент существует

{

if (TB.Text == "textBox1") // Обращаемся к конкретному элементу правления

{

TB.Text = "Надейно и заменено";

}

else

{

TB.Text = "Text"; // Меняем текст во всех остальных подобных элементах

}

}

}

Компилируем, проверяем работоспособность. Индикатор заполняется после нажатия кнопки Массив, и добавляется текстовое поле редактирования под номером i, указанным в числовом поле справа от кнопки:

Рис. 4. 5. Окончательная работа блока добавления и уничтожения элементов управления

5. Модификация приложения WindowsForms: стандартные диалоговые окна

Расставим вторую группу элементов. Наша цель, по нажатию кнопок Изменить фон формы, вызвать стандартное окно выбора цветов. По нажатию в нём кнопки ОК меняем цвет фона. Кнопка Отмена справа возвращает фон по умолчанию. Вторая кнопка Изменить шрифт формы, меняет весь шрифт используемый на форме. Кнопка Отмена возвращает всё «как было». Дальше, здесь же поставим элемент CheckedListBox. При выборе пункта Овальность, поменяем форму нашего окна на овал. При выборе пункта Непрозрачность окна в %, окно меняет прозрачность в зависимости от числа (от 0 до 100) в NumericUpDown. Кнопка Выбор директории открывает стандартный диалог выбор папки через Проводник Windows. По нажатию кнопки ОК отобразив в текстовом поле редактирования полный путь к выбранной директории. Добавим также ещё один ProgressBar который будет отсчитывать время по секундам и обнуляться по прошествии минуты. Отсчёт времени будем вести по текущему системному.

Расставим вторую группу следующим образом:

Рис. 5. 1. Расстановка элементов второй группы (Стандартные диалоговые окна)

Кнопка Изменить фон формы

(Name):

button5

Text:

Изменить фон формы

Кнопка Отмена

(Name):

button6

Text:

Отмена.

ToolTip на Hint:

Возвращает фон формы по умолчанию

Кнопка Изменить шрифт формы

(Name):

button8

Text:

Изменить шрифт формы

Кнопка Отмена

(Name):

button7

Text:

Отмена

ToolTip на Hint:

Возвращает шрифт формы по умолчанию

Список с выбором флажками CheckedListBox5

(Name):

checkedListBox1

ПРИМЕЧАНИЕ № 5: Для этого элемента, как и для ComboBox и ListBox можно изначально задавать «коллекцию» уже готовых элементов. Для этого в свойствах элемента ищем поле Items и добавляем новые элементы через нажатие кнопки (…). Разделителем элементов будет перевод строки в окне добавления элементов.

NumericUpDown

(Name):

NumericAplha

Maximum:

100

^ Максимальное число

Mininum:

1

^ Минимальное число

Increment:

1

^ Шаг.

Кнопка Выбор директории

(Name):

button9

Text:

Выбор директории

Текстовое поле редактирования TextBox:

(Name):

textBox1

Индикатор выполнения ProgressBar

(Name):

progressBar1

Добавим ещё один таймер, который активируем сразу же при запуска приложения:

Timer

(Name):

TimerOneMinute

Enabled:

True

^ Запускаем таймер при инициализации приложения.

Добавим диалоговые окна с панели элементов (перетаскиванием на форму):

ColorDialog

(Name):

ColorSelect

FontDialog

(Name):

FontSelect

FolderBrowserDialog

(Name):

SelectBrowser

Теперь пропишем все необходимые события (в том порядке, в котором задавали свойства элементов управления):

Событие Click кнопки Изменить фон формы:

privatevoid button5_Click(object sender, EventArgs e)

{

ColorSelect.ShowDialog(); // Показываемокновыборацвета (Windows)

this.BackColor = ColorSelect.Color; // Устанавливаем в качестве текущего для фона формы

StatusLabel.Text = "Выбан цвет: " + ColorSelect.Color; // Выводит текст в строку состояния с названием цвета (если определено) или его RGB-представлением

}

СобытиеClickкнопкиОтмена:

privatevoid button6_Click(object sender, EventArgs e)

{

this.BackColor = Color.Empty; // Возвращаемпервоначальныйфон

}

Событие Click кнопки Изменить шрифт формы:

privatevoid button8_Click(object sender, EventArgs e)

{

try

{

FontSelect.ShowDialog();

this.Font = FontSelect.Font;

StatusLabel.Text = "Выбраншрифт: " + FontSelect.Font.ToString();

}

catch

{

// Ловим ошибку: шрифтне TrueType

}

}

СобытиеClickкнопки Отмена:

privatevoid button7_Click(object sender, EventArgs e)

{

this.Font = DefaultFont;

StatusLabel.Text = "Выбранпервоначальныйшрифт: " + DefaultFont.Name;

}

Событие SelectedIndexCahgedсписка с выбором флажками:

privatevoid checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)

{

GraphicsPath G = newGraphicsPath(); // Создаёмновыйграфическийэлемент

Rectangle Rect = newRectangle(0, 0, this.Width, this.Height); // Создаём прямоугольник

if (checkedListBox1.CheckedItems.Contains("Непрозрачностьокнав %") == true) // Еслиэлементвыделен

{

this.Opacity = Convert.ToDouble(NumericAplha.Value) / 100; // Прозрачонть: значение NumericAplha / 100 (0 - полнапрозрачность, 1 - полнаянепрозрачность)

}

if (checkedListBox1.CheckedItems.Contains("Овальноеокно") == true)

{

G.AddEllipse(0, 0, this.Width, this.Height); // Добавляем эллипс покрывающий всю форму в графический элемент

this.Region = new System.Drawing.Region(G); // Создаём объект нового региона и меняем регион формы на эллепис

}

else

{

G.AddRectangle(Rect); // Добавляем прямоугольник

this.Region = new System.Drawing.Region(G); // Выбираемпрямоугольник

}

}

Событие Click кнопки Выбор директории:

privatevoid button9_Click(object sender, EventArgs e)

{

SelectBrowser.ShowDialog();

textBox1.Text = SelectBrowser.SelectedPath; // Заносимзначениепутив textBox1

}

СобытиеTickтаймера:

privatevoid TimerOneMinute_Tick(object sender, EventArgs e)

{

Byte Seconds = Convert.ToByte(DateTime.Now.Second);

progressBar1.Value = Seconds;

}

Изменим код методаLWP05Main()файла LWP05Main.cs:

public LWP05Main()

{

InitializeComponent();

/* Инициализируем массив элементов для checkedListBox1 */

String[] CheckItems = { "Непрозрачность окна в %", "Овальное окно" };

checkedListBox1.Items.AddRange(CheckItems);

/* Устанавливаем режим выбора элемента с двойного нажатия на одинарный */

checkedListBox1.CheckOnClick = true;

NumericAplha.Value = 100; // Начальное значение

progressBar1.Maximum = 60; // Граница индикаторы выполнения

}

Добавим в этом же файле два пространства имён:

using System.Drawing.Drawing2D; // Объявляем пространство имён для рисования 2D-графики

using System.IO;

Компилируем, проверяем работоспособность:

Рис. 5. 2. Окончательная работа блока стандартных диалоговых окон (другой цвет формы, результат выбора шрифта для формы и директории)

Рис. 5. 3. Окончательная работа блока стандартных диалоговых окон

(25% прозрачности на фоне рабочего стола, овальность и диалог выбора шрифта)

Единственное о чём мы забыли. Для того чтобы изменить прозрачность на новое значение, нужно снять галочку и снова установить после выбора нового значения. Исправим это событием Value Changed элемента управления Numeric Alpha:

privatevoid NumericAplha_ValueChanged(object sender, EventArgs e)

{

if (checkedListBox1.CheckedItems.Contains("Непрозрачностьокнав %") == true) // Еслиэлементвыделен

{this.Opacity = Convert.ToDouble(NumericAplha.Value) / 100; // Прозрачность: значение NumericAplha / 100 (0 - полнапрозрачность, 1 - полная непрозрачность)

}

}

6. Модификация приложения Windows Forms: открытие файла, сохранение файла и работа с текстом

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

Расставим третью группу следующим образом:

Рис. 5. 1. Расстановка элементов третьей группы (Открытие файла, сохранение файла и работа с текстом)

Перетащим с панели элементов новый элемент ContextMenuStrip. Установим для него свойство (Name): MenuRight. Заполним его элементами также как и главное меню Файл:

Если редактирование прямо на форме не слишком наглядно, можно также воспользоваться расширенным редактором коллекции элементов для меню. Он также подходит для обычного меню MenuStrip, элемента ToolStrip и строки состояния StatusStrip.

Рис. 6. 1. Редактор коллекции элементов (для MouseRight)

С панели инструментов добавим также элементы диалоговых окон сохранения и загрузки: OpenFileDialog и FileSaveDialog. Установим им имена (Name) соответственно: FileOpen и FileSave:

Свойства элемента FileSave

(Name):

FileSave

FileName:

Документ

^ Здесь указываем название файл без разширения по умолчанию.

InitialDirectory:

<ваш путь>

Если нужно указать стартовую директорию для сохранения. Путь может выглядеть так: D:\Folder1\Folder2

DefaultExt:

Файлы RTF|*.rtf

^ Здесь указывается суффикс файла сохранения и название этого суффикса.

Filter:

Файлы RTF|*.rtf|Текстовый документ|*.txt|Текст OpenDocument|*.odt|Все файлы|*.*

ПРИМЕЧЕНИЕ № 4: Свойства DefaultExt и Filter записываются через разделители «|». Напомним, что в лабораторных работах данного практикума запись значений для полей свойств элементов управления иногда такова: «Имя свойства: <Значение>.» -- точка после закрывающей кавычки не относится к значению, поэтому не стоит заносить скажем в поле принимающее только целое числовое значение ещё и точку. Среда выдаст ошибку либо уберёт точку.

Пример (задание точки в имени элемента):

Рис. 6. 2. Ошибочное задание поля (Name)

Свойства элемента FileOpen

(Name):

FileOpen

FileName:

Документ

^ Здесь указываем название файл без расширения по умолчанию.

Имена остальных элементов оставляем как есть:

(Name):

button10

Text:

Цвет

ToolTip на Hint:

Цвет выделенного текста

(Name):

button11

Text:

Шрифт

ToolTip на Hint:

Шрифтвыделенноготекста

(Name):

button14

Text:

Фон

ToolTip на Hint:

Фонвыделенноготекста

(Name):

button15

Text:

Копировать

ToolTip на Hint:

Копировать выделенный текст в буфер обмена

(Name):

button13

Text:

Выделитьвсё

(Name):

button12

Text:

Очистить

Событие Click кнопки Цвет:

privatevoid button10_Click(object sender, EventArgs e)

{

ColorSelect.ShowDialog();

richTextBox1.SelectionColor = ColorSelect.Color; // Меняемцветвыделенноготекста richTextBox1

}

СобытиеClickкнопки Шрифт:

privatevoid button11_Click(object sender, EventArgs e)

{

try

{

FontSelect.ShowDialog();

richTextBox1.SelectionFont = FontSelect.Font; // Меняем шрифт выделенного текста richTextBox1

}

catch

{

// Ловим ошибку: шрифт не TrueType

}

}

СобытиеClick кнопки Фон:

privatevoid button14_Click(object sender, EventArgs e)

{

ColorSelect.ShowDialog();

richTextBox1.SelectionBackColor = ColorSelect.Color; // Меняемфонвыделенноготекста richTextBox1

}

СобытиеClickкнопки Копировать:

privatevoid button15_Click(object sender, EventArgs e)

{

richTextBox1.Copy(); // Копируем выделенный фрагмент текста в элементе

}

СобытиеClick кнопки Очистить:

privatevoid button12_Click(object sender, EventArgs e)

{

richTextBox1.Clear(); // Очистка richTextBox1

}

Событие Click кнопки Выделить всё:

privatevoid button13_Click(object sender, EventArgs e)

{

richTextBox1.Focus(); // Фокус на элемент

richTextBox1.SelectAll(); // Выделяем весь текст

}

Событие Click кнопки главного меню Открыть:

Privatevoid открыть Tool Strip Menu Item_Click(object sender, EventArgs e)

{

try

{

// Открываем диалог открытия файла

FileOpen.ShowDialog();

// Создаём поток для содержимого файла

StreamFStream = FileOpen.OpenFile();

// Загружаем файл (открываем форматированный текст)

richTextBox1.LoadFile(FStream, RichTextBoxStreamType.RichText);

// Закрываем поток и высвобождаем память

FStream.Close();

this.Text = Title + " :: " + FileOpen.FileName;

}

catch

{

// Ловим ошибку: файл не найден

}

}

Событие Click кнопки главного меню Сохранить как…:

Privatevoid сохранитьToolStripMenuItem_Click(object sender, EventArgs e)

{

// Создаём строковую переменную для хранения имени сохранённого файла

String FileSavedAs;

// Создаём поток в памяти

MemoryStream MStream = newMemoryStream();

// Cоздаём поток для файл

Stream FStream;

if (FileSave.ShowDialog() == DialogResult.OK) // По завершении диалога и нажатии кнопки ОК...

{

// Связываем поток с именем существующего файла, если файла нет, то создаём новый файл

FStream = FileSave.OpenFile();

// Меняем положение в потоке

MStream.Position = 0;

// Сохраняем в поток содержимое richTextBox1 (сохраняем форматированный текст)

richTextBox1.SaveFile(MStream, RichTextBoxStreamType.RichText);

// Записываем информацию в файл

MStream.WriteTo(FStream);

// Закрываем поток и высвобождаем память

FStream.Close();

FileSavedAs = FileSave.FileName;

this.Text = Title + " :: " + FileSavedAs; // После сохранения укажем сохранённый файл в заголовке

}

}

Модифицируем событие Click кнопки:

privatevoid button4_Click(object sender, EventArgs e)

{

SaveQuestion(); // Вызов метода обработки "правильного" закрытия предложения с выводом диалога сохранения данных

}

Сам метод SaveQuestion(), добавим в этом же файле LWP05Main.cs:

void SaveQuestion()

{

DialogResult Result = MessageBox.Show("Сохранить изменения в документе?", Title + " :: Сохранение изменений", MessageBoxButtons.YesNo);

switch (Result) // Оператор переключения switch, получает значения Result результата выполнения диалога

{

caseDialogResult.Yes:

{

сохранитьToolStripMenuItem_Click(null, null); // Генерируем событие нажатия кнопки Сохранить как...

Close();

break;

}

caseDialogResult.No: { Close(); return; }

}

}

В начале файла добавим строковую переменную:

publicpartialclassLWP05Main : Form

{

String Title; // Строковая переменная для хранения заголовка приложения

Модифицируем метод LWP05Main() следующим образом:

public LWP05Main()

{

InitializeComponent();

/* Инициализируем массив элементов для checkedListBox1 */

String[] CheckItems = { "Непрозрачность окна в %", "Овальное окно" };

checkedListBox1.Items.AddRange(CheckItems);

/* Устанавливаем режим выбора 'ktvtynf с двойного нажатия на одинарный */

checkedListBox1.CheckOnClick = true;

NumericAplha.Value = 100; // Начальное значение

progressBar1.Maximum = 60; // Граница индикаторы выполнения

Title = this.Text; // Сохраняем первоначальный заголовок

}

Теперь обработаем контекстное меню. События Click кнопок контекстного меню Открыть, Сохранитькак…иВыход:

privatevoidоткрытьToolStripMenuItem1_Click(object sender, EventArgs e)

{

открытьToolStripMenuItem_Click(null, null); // Вызываем метод события Click главного меню для пункта Открыть

}

Privatevoid сохранитьКакToolStripMenuItem_Click(object sender, EventArgs e)

{

Сохранить Tool Strip Menu Item_Click(null, null); // Вызываем метод события Click главного меню для пункта Сохранить как...

}

Privatevoid выйти ToolStrip Menu Item_Click(object sender, EventArgs e)

{

SaveQuestion();

}

События MouseEnter оставшихся кнопок главного меню:

Privatevoid открытьToolStripMenu Item_MouseEnter(object sender, EventArgs e)

{

StatusLabel.Text = открытьToolStripMenuItem1.Text + " (" + открытьToolStripMenuItem1.ShortcutKeyDisplayString + ")";

}

Privatevoid сохранитьToolStripMenuItem_MouseEnter(object sender, EventArgs e)

{

StatusLabel.Text = сохранитьКакToolStripMenuItem.Text + " (" + сохранитьКакToolStripMenuItem.ShortcutKeyDisplayString + ")";

}

Компилируем, проверяем работоспособность:

Рис. 6. 3. Окончательная работа третьего блока (Открытие файла, сохранение файла и работа с текстом)

7. Модификация приложения WindowsForms: прочее

Расставим последнюю группу элементов. Пусть у нас есть элемент для работы со вкладками. При выборе одной вкладки у нас есть всего одна кнопка. Нажав на неё, открываем диалог выбора файла, выбираем файл изображения, и часть этого изображения вставляется в диалоговое окно (в определённое место). Вторая вкладка содержит один флаг, нажатие на который отображает два элемента RadioButton. Выбор одного из них высвечивает определённый элемент. Один из них: текстового поля с форматированием по маске, а второй: выбор даты и времени по календарю.

Расставим последнюю группу следующим образом:

Рис. 7. 1. Расстановка элементов последней группы (Прочее)

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

Оставим для этого элемента имя по умолчанию (tabControl1). Нас интересует добавление новых вкладок. Для этого перейдём в свойства элемента и найдём поле TabPages. Здесь мы видим значение: (Коллекция). Добавление элементов аналогично ComboBox и подобным элементам. Через TabPagesпереходим в Редактор коллекции TabPages:

Рис. 7. 2. Редактор коллекции TabPages

Здесь мы можем отредактировать всё, что связано с каждой вкладкой (фактически вкладка похожа на отдельную форму). Также можем изменить порядок отображение вкладок, добавить новые или удалить ненужные вкладки.

Оставим имена вкладок, как есть, изменишь лишь заголовки (поля Text вкладки). У нас должно получиться три вкладки с заголовками Вкладка № 1,Вкладка № 2и Простые часы соответственно (под именами tabPage,tabPage2и tabPage3).

На первой вкладке расположим CheckBox:

Расположение CheckBox:

На второй вкладке установим кнопку:

Параметры для этой кнопки

(Name):

button16

Text:

Выбрать изображение

На третьей вкладке установим кнопку:

Параметры для этой кнопки

(Name):

button17

Text:

Простые часы

В правой части от вкладок расположим сначала элемент PictureBox (имя pictureBox1 оставим как есть):

А затем поверх расположим две элемента выбора (переключателя) RadioButton:

Элемент MasketTextBox:

(Name):

masketTextBox1

PromptChar:

*

Visible:

False

Элемент DateTimePicker:

(Name):

dateTimePicker1

Visible:

False

На рисунке № 7. 1. PictureBox обозначен пунктирными линиями. Параметры RadioButton () такие:

(Name):

radioButton1

Text:

Специальноеполе

Visible:

False

(Name):

radioButton2

Text:

Датаивремя

Visible:

False

Для работы переключателей RadioButton необходимо объединять их в группы. Так как мы помещаем их изначально в группу связанную с GroupBoxПрочее, эти элементы изначально будут переключены друг на друга и работать в связке. Нажатие на один переключатель снимет точку с другого.

Для поля форматирования по маске важное свойство указывается в поле Mask: там выбирается формат отображения данных. Выберем маску ввода Shortdateandtime (US). Значение поле установится такое: 00/00/0000 90:00. Для отображения всех возможных предустановленных масок ввода, нужно войти в (…) поля Mask:

Рис. 7. 3. Все возможные маски ввода

Также здесь же можно изменить готовую или задать свою (<Специальный>).

Добавим обработчики событий. Для кнопки Выбрать изображение:

privatevoid button16_Click(object sender, EventArgs e)

{

try

{

checkBox1.Checked = false;

radioButton1.Visible = false;

radioButton2.Visible = false;

maskedTextBox1.Visible = false;

dateTimePicker1.Visible = false;

// Открываем диалого ткрытия файла

FileOpen.FileName = "Изображение";

FileOpen.ShowDialog();

String ImageName = FileOpen.FileName;

// Создаём поток для содержимого файла

StreamFStream = FileOpen.OpenFile();

// Загружаемфайл (открываемформатированныйтекст)

pictureBox1.Image = Image.FromFile(ImageName);

// Закрываем поток и высвобождаем память

FStream.Close();

this.Text = Title + " :: " + FileOpen.FileName;

}

catch

{

// Ловим ошибку: файл не найден

}

}

Для выделения переключателя с флагом CheckBox (событие CheckedChanged, аналог Click):

privatevoid checkBox1_CheckedChanged(object sender, EventArgs e)

{

if (checkBox1.Checked == true)

{

radioButton1.Visible = true;

radioButton2.Visible = true;

}

else

{

radioButton1.Visible = false;

radioButton2.Visible = false;

maskedTextBox1.Visible = false;

dateTimePicker1.Visible = false;

}

}

И аналогичные события для Radio Button'ов:

privatevoid radioButton1_CheckedChanged(object sender, EventArgs e)

{

maskedTextBox1.Visible = true;

dateTimePicker1.Visible = false;

}

privatevoid radioButton2_CheckedChanged(object sender, EventArgs e)

{

maskedTextBox1.Visible = false;

dateTimePicker1.Visible = true;

}

Событие Mouse Hover (возникает в случае задержки курсора мышки на элементе) для PictureBox:

privatevoid pictureBox1_MouseHover(object sender, EventArgs e)

{

if (pictureBox1.Image != null)

Hint.SetToolTip(pictureBox1, "Размеризображения: " + "\nШирина: " + pictureBox1.Image.PhysicalDimension.Width + "\nВысота: " + pictureBox1.Image.PhysicalDimension.Height);

}

Теперь разберёмся с третьей вкладкой TabControl. Единственная кнопка данной вкладки («Простые часы») будет вызывать новую форму. Добавим её, выполним последовательно «Проект» ->«Добавить форму Windows...». В открывшемся окне в поле Имя вводим LWP05Clock.csи жмём Добавить. Получаем новую форму в обозревателе решений. Поменяем её свойства следующим образом:

Text

изменим с LWP05Clock на Элементы управления (C#) :: Простые часы

^ Поменяем заголовок формы (то что отображается в шапке приложения слева).

MaximizeBox

изменим с True на False

^ Уберём кнопку Развернуть.

Icon

изменим изображение (иконку) приложения

^ Необходим файл значка *.ico.

Size

изменим со значений 300; 300 на 400; 150

^Поменяем размер формы.

FormBorderStyle

изменим с Sizable на FixedDialog

^ Сделаем окно «неизменяем» по размерам.

Основу часов должен составлять всё тот же простой таймер (Timer). Но,к сожалению, точность таймера ОС оставляет желать лучшего. Сообщения таймера, создающие события Tick, проходят через очередь приложения. К тому же, другие приложения могут блокировать на некоторое время работу Вашего приложения. Поэтому события таймера возникают в общем случае нерегулярно. Кроме того, несмотря на возможность указания интервалов времени в миллисекундах, реальная дискретность таймера определяется периодом прерываний, посылаемых таймером.

Нерегулярность прихода сообщений таймера не вызывает особых проблем, если речь не идёт о системах реального времени. Такие системы, основанные на ОС Microsoft Windows, должны использовать специальные драйверы для работы с периферийными устройствами, критичными к скорости реакции системы. Строго говоря, ОС Microsoft Windows не предназначена для работы в системах реального времени. Скорее, она ориентирована на работу с пользователем, когда небольшие задержки событий во времени не имеют никакого значения. Системы реального времени обычно создаются на базе специальных ОС реального времени.

Добавим на форму LWP05Clockэлемент Timerи изменим его свойства следующим образом:

(Name):

Clock

Interval:

1000

Рис. 7. 4. Свойства добавленного таймера Clock

По умолчанию таймер создается в заблокированном состоянии. Чтобы его разблокировать, необходимо записать значение true в свойство Enabled. Сделаем это в коде инициализации формы. В файле LWP04Clock.csнайдём:

public LWP05Clock()

{

InitializeComponent();

}

Заменим этим кодом:

public LWP05Clock()

{

InitializeComponent();

Clock.Enabled = true;

}

Таймер генерирует события Tick, период которых задается свойством Interval. Это уже было рассмотрено в данной лабораторной работе, но напоминаем. Обработчик этих событий может выполнять любые действия в соответствии с логикой работы приложения.

Установим на форме один TextBoxсо следующими свойствами:

(Name):

Now

ReadOnly:

True

Две кнопки слева и справа под TextBoxсо свойствами:

(Name):

button1

Text:

Старт

(Name):

Button2

Text:

Стоп

А также поставим на форму не совсем стандартный элемент (отсутствует в группе Стандартные элементы правления на панели элементов). Им станет TrackBar:

Найти его можно просто раскрыв список Все формы WindowsForms панели элементов.

TrackBar

(Name):

Seconds

Maximum:

60

Minimum:

1

Элемент управления TrackBar представляет собой шкалу с движком, с помощью которого пользователь может изменять (регулировать) численное значение. Это может быть уровень громкости, баланс звуковых каналов, насыщенность отдельных компонентов цвета, яркость и пр.

Движок элемента управления TrackBar можно передвигать мышью, клавишами перемещения курсора, а также клавишами Home, End, PageUp и PageDown. При перемещении движка создаются события Scroll.

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

Можно выбрать горизонтальное или вертикальное расположение окна TrackBar. Деления могут находиться с любой стороны, с обеих сторон или их может не быть совсем.

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

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

Свойства Minimum и Maximum определяют, соответственно, минимальное и максимальное значение, связанное с движком. По умолчанию минимальное значение равно 1, а максимальное -- 10.

Дискретность изменения значения при использовании клавиш перемещения курсора задается свойством SmallChange. По умолчанию она равна 1. Что же касается дискретности при использовании клавиш Page Up и Page Down, то её можно задать с помощью свойства LargeChange. По умолчанию значение этого свойства равно 5.

Чтобы задать количество штрихов, отображаемых на шкале элемента управления TrackBar, нужно отредактировать свойство TickFrequency.

Изменяя свойство Orientation, можно задать горизонтальное или вертикальное расположение окна элемента управления TrackBar. В первом случае свойство должно содержать значение System.Windows.Forms.Orientation.Horizontal, а во втором -- System.Windows.Forms.Orientation.Vertical.

Свойство TickStyle задает стиль шкалы и ползунка. Вот возможные значения:None; TopLeft; BottomRight; Both.

В первом случае, при использовании значения None, штрихи не отображаются на шкале. Остальные константы позволяют задать расположение штрихов сверху или снизу (справа или слева) от движка, а также по обе стороны движка (значение Both).

Последний штрих. Размести под TrackBarодин Label (чтобы использовать TrackBarпо назначению).

Окончательный вид формы будет таким:

Рис. 7. 5. Расстановка элементов последней формы LWP05Clock

Перепишем код метода LWP05Clock():

publicLWP05Clock()

{

InitializeComponent();

Clock.Enabled = true;

label1.Text = "";

}

Инициализируем единственное событие таймера Clock--Tick:

privatevoid Clock_Tick(object sender, EventArgs e)

{

DateTime dt = DateTime.Now;

Now.Text = dt.Hour + ":" + dt.Minute + ":" + dt.Second;

if (Clock.Enabled == true)

{

button1.FlatStyle = FlatStyle.Standard;

button1.BackColor = Color.LawnGreen;

}

label1.Text = "";

Seconds.Value = dt.Second;

}

Проинициализируем событие ScrollдляTrackBar:

privatevoid Seconds_Scroll(object sender, EventArgs e)

{

label1.Text = Seconds.Value.ToString();

}

СобытиеClickкнопки Старт:

privatevoid button1_Click(object sender, EventArgs e)

{

Clock.Start();

button2.FlatStyle = FlatStyle.System;

button1.FlatStyle = FlatStyle.Standard;

button1.BackColor = Color.LawnGreen;

}

СобытиеClick кнопки Стоп:

privatevoid button2_Click(object sender, EventArgs e)

{

Clock.Stop();

button1.FlatStyle = FlatStyle.System;

button2.FlatStyle = FlatStyle.Standard;

button2.BackColor = Color.IndianRed;

}

Событие Click кнопки Простые часы главной формы LWP05Main:

privatevoid button17_Click(object sender, EventArgs e)

{

LWP05Clock Form = newLWP05Clock();

Form.ShowDialog();

}

8. Завершающая часть

Компилируем приложение (Release) и запускаем. Результат работы показан на рисунках ниже:

Рис. 8. 1. Модифицированное приложение WindowsForms

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

Рис. 8. 2. Модифицированное приложение WindowsForms: результат работы переключателей на фоне уже выбранного изображения

Рис. 8. 3. Модифицированное приложение WindowsForms: результат работы формы Простые часы (ползунок двигается с каждой секундой при работающих часах)

9. О приложении к Лабораторной работе № 5

Получившуюся программу (LWP05WindowsForms04.exe), собранную из кусков кода приведённых в данной лабораторной работе, можно загрузить по ссылке в конце этого материала.

Размещено на Allbest.ru

...

Подобные документы

  • Основные инструменты построения Web-приложения. Язык сценариев PHP. Системный анализ предметной области базы данных. Коды SQL запросов на создание таблиц. Разработка Web-приложения. Описание функциональности модулей. Система управления содержимым статей.

    курсовая работа [4,8 M], добавлен 28.04.2014

  • Создание приложения Windows Forms в среде Microsoft Visual Studio 2008. Разработка программы "Курсовой" для организации работы по учёту курсовых работ в учебных заведениях с возможностью добавления, удаления, редактирования и поиска информации.

    курсовая работа [2,2 M], добавлен 28.06.2011

  • Проектирование службы Windows и приложения для управления этой службой, которое позволит контролировать данные приложения - запускать и завершать определенные процессы по желанию пользователя через определенные промежутки времени. Инструкция по установке.

    курсовая работа [2,8 M], добавлен 05.01.2013

  • Описание платформы NET Framework. База данных Microsoft Access. Разработка Windows приложения. Модель программирования Windows Forms. Функциональное назначение программы. Входные и выходные данные. Требования к техническому и программному обеспечению.

    курсовая работа [2,2 M], добавлен 15.03.2015

  • Создание элемента управления для отображения карт, представляющих собой векторные изображений в формате Encapsulated PostScript. Поддержка использования программных интерфейсов. Разработка элемента управления, вписывание изображения в область компонента.

    дипломная работа [1,1 M], добавлен 11.11.2010

  • Основы организации приложения в Windows. Посылка и передача сообщений для окон. Создание и отображение главного окна приложения. Деактивация приложения, его фазы. Сообщения клавиатуры и функции для работы с ней. Определение состояния отдельных клавиш.

    лекция [65,7 K], добавлен 24.06.2009

  • Понятия вычислительной системы, ее аппаратное обеспечение. Конфигурация и устройство компьютера. Элементы управления операционной системы Windows ХР. Стандартные и служебные приложения ОС. Архитектура фон Нейман. Работа в программе Microsoft Excel.

    шпаргалка [47,0 K], добавлен 29.12.2010

  • Разработка автоматизированной системы управления отдела бухгалтерии по расчету зарплаты. Назначение разработанного приложения, схема его основной функциональности. Структура базы данных с описанием таблиц. Схема диалога пользователя с приложением.

    курсовая работа [971,6 K], добавлен 29.12.2013

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

    курсовая работа [1,2 M], добавлен 02.07.2014

  • Технология Active Template Library. Создание полнофункционального элемента управления и расширение свойств. Подготовка рабочего пространства и ресурсов. Проектирование пользовательского интерфейса. Добавление переменных для управления анимацией.

    курсовая работа [722,5 K], добавлен 09.12.2015

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

    дипломная работа [791,8 K], добавлен 10.07.2017

  • Изучение истории достижений корпорации Oracle. Разработка клиент-серверного приложения на языке Delphi XE, реализующего возможность управления персоналом на предприятии. Основные структуры данных. Создание инструкции работы с приложением "Отдел кадров".

    дипломная работа [974,7 K], добавлен 08.06.2013

  • Сущность и возможности языка программирования Visual Basic. Элементы управления и функции Windows API, используемые в проекте. Структуры и составные части приложения "Video2Bmp". Организация режимов работы программы: "Склейка кадров", "Создание видео".

    курсовая работа [1,0 M], добавлен 29.08.2013

  • Функциональные возможности библиотеки OpenGL. Разработка процедуры визуализации трехмерной сцены, интерфейса пользователя и подсистемы управления событиями с целью создания приложения для построения динамического изображения 3D-модели объекта "Самолет".

    курсовая работа [1,7 M], добавлен 28.06.2011

  • Методика разработки и листинг программы для управления динамиком системного блока, обеспечения установки частоты и длительности формируемых сигналов. Алгоритм и этапы работы проектируемого приложения, анализ полученных результатов. Пример его работы.

    лабораторная работа [79,0 K], добавлен 17.12.2015

  • Разработка программного приложения Windows Forms для работы с базой данных на языке высокого уровня в автономном режиме с использованием ADO.NET. Создание консольных приложений (варианты метода Main), выполнение запросов к SQL серверу и листинг программ.

    курсовая работа [2,4 M], добавлен 16.06.2014

  • Изучение основных методов разработки программ для операционных систем семейства Windows с применением технологий .NET. Анализ возможностей интегрированной среды разработки Microsoft Visual Studio, языка C# и создание приложения "пункт видеопроката".

    курсовая работа [1014,7 K], добавлен 28.06.2011

  • Функционирование разрабатываемого элемента управления ActiveX, его свойства и методы. Создание внешнего вида элемента управления. Программирование событий инициализации и изменения размеров. Тестирование элемента на этапе проектирования и выполнения.

    курсовая работа [1,4 M], добавлен 07.04.2014

  • Разработка приложения Windows "Учет заказов и продаж". Структура базы данных, информационное и программное обеспечение. Описание программы на языке Visual C+ с использованием технологии Microsoft.net, элементы управления и руководство пользователя.

    курсовая работа [4,8 M], добавлен 25.06.2011

  • Проектирование вариантов использования приложения. Анализ существующей версии приложения. Обоснование выбора инструментальных программных средств. Проектирование интерфейса пользователя. Адаптация под мобильные устройства. Описание программного продукта.

    курсовая работа [2,8 M], добавлен 25.06.2017

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.