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



 

Расставим вторую группу элементов. Наша цель, по нажатию кнопок Изменить фон формы, вызвать стандартное окно выбора цветов. По нажатию в нём кнопки ОК меняем цвет фона. Кнопка Отмена справа возвращает фон по умолчанию. Вторая кнопка Изменить шрифт формы, меняет весь шрифт используемый на форме. Кнопка Отмена возвращает всё «как было». Дальше, здесь же поставим элемент 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 кнопки Изменить фон формы:

 

   private void button5_Click(object sender, EventArgs e)

   {

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

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

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

   }

 

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

 

   private void button6_Click(object sender, EventArgs e)

   {

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

   }

 

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

 

   private void button8_Click(object sender, EventArgs e)

   {

       try

       {

           FontSelect.ShowDialog();

           this.Font = FontSelect.Font;

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

       }

       catch

       {

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

       }

   }

 

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

 

   private void button7_Click(object sender, EventArgs e)

   {

       this.Font = DefaultFont;

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

   }

 

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

 

   private void checkedListBox1_SelectedIndexChanged(object sender, EventArgs e)

   {

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

       Rectangle Rect = new Rectangle(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 кнопки Выбор директории:

 

   private void button9_Click(object sender, EventArgs e)

   {

       SelectBrowser.ShowDialog();

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

   }

 

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

 

   private void 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% прозрачности на фоне рабочего стола, овальность и диалог выбора шрифта)

 

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

 

   private void NumericAplha_ValueChanged(object sender, EventArgs e)

   {

 

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

       {

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

          }

   }

 


Дата добавления: 2019-09-13; просмотров: 261; Мы поможем в написании вашей работы!

Поделиться с друзьями:






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