Выбор цвета windows forms

Обновлено: 04.07.2024

OpenFileDialog — выбор имени файла при открытии документа;

SaveFileDialog — задание имени при сохранении документа;

ColorDialog — выбор цвета;

FontDialog — для настройки шрифтов;

FolderBrowserDialog — работа с каталогами;

PageSetupDialog — настройка печати;

PrintDialog — организация печати;

PrintPreviewDialog — предварительный просмотр документа.

Вначале рассмотрим работу с диалогами в целом, а затем на примерах разберёмся, как использовать различные стандартные диалоги для решения своих задач.

Общая схема применения стандартных диалогов

Порядок работы с любым стандартным диалогом может быть следующим:

выбираем на панели компонентов Tools необходимый элемент и размещаем его на форме;

определяемся с тем, как мы будем вызывать этот диалог. Обычно это делается по щелчку мыши по кнопке (на форме должен быть объект типа Button ) или выбор определяем в каком-то пункте меню (устанавливаем на форму объект типа MenuStrip );

затем создаём обработчик событий для кнопки или пункта меню (в зависимости от того, что выбрано в пункте 2). Практически всегда обработчик событий будет иметь такой вид:

void Имя_Click(object sender, EventArgs e)

// Выполнение каких-либо действий.

// Обычно — это применение выбранных в окне диалога параметров

Имя_Click() — имя обработчика событий, задаётся системой автоматически;

Диалог — имя объекта нужного класса-диалога. Чаще используют то имя, что даст система. Например, объект OpenFileDialog получит по-умолчанию имя openFileDialog1.

Как работает такой обработчик ( Имя_Click() )? Всё очень просто. В операторе if вызывается метод ShowDialog() — показать (открыть) диалог. В открытом окне диалога пользователь выбирает, задаёт тем или иным способом необходимые параметры. Затем он нажимает на кнопку для подтверждения выбора (для разных диалогов она может иметь разное название, например « Открыть » для диалога по выбору имени открываемого файла) или кнопку « Отмена » для отмены действий. Если пользователь подтвердил свой выбор, то метод ShowDialog() возвращает результат DialogResult.OK . При отмене действий метод вернёт DialogResult. Cancel .

Понятно, что по ветви « Да » оператора

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

Теперь на примерах рассмотрим работу конкретных диалогов.

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

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

На форме вначале разместим два компонента: MenuStrip (имя по-умолчанию menuStrip1 ) — для организации меню и TextBox (имя по-умолчанию textBox1 ) — для работы с текстом. В окне свойств ( Properties ) для textBox1 присвоим значение true для свойства Multiline , т. е. мы хотим иметь многострочный редактор. Можно ещё и свойству Dock присвоить значение Fill (заполнять всю свободную область формы).

Классы OpenFileDialog и SaveFileDialog

Разместим на форме два стандартных компонента: OpenFileDialog и SaveFileDialog . По-умолчанию объекты этих классов получат имена o penFileDialog 1 и s aveFileDialog 1 соответственно.

В меню создадим пункт Файл , а в нём Открыть , Сохранить как и Выход . Напишем для них обработчики событий:

OpenToolStripMenuItemClick — для пункта Открыть ;

SaveToolStripMenuItemClick — для пункта Сохранить как ;

ExitToolStripMenuItemClick — для пункта Выход .

Возможный текст основной части программы (файл MainForm.cs):

public partial class MainForm : Form

// Выбрать и открыть текстовый файл,

// вывести его содержимое в текстовое поле

void OpenToolStripMenuItemClick(object sender, EventArgs e)

openFileDialog1.Filter = "text files (*.txt)|*.txt";

StreamReader r = File.OpenText(name_file);

while((s = r.ReadLine()) != null)

// Текст из элемента textBox1 сохранить в файле,

// имя которого задаётся в окне диалога

void SaveToolStripMenuItemClick(object sender, EventArgs e)

saveFileDialog1.Filter = "text files (*.txt)|*.txt";

StreamWriter w = File.CreateText(name_file);

// Выход из программы

void ExitToolStripMenuItemClick(object sender, EventArgs e)

Пояснения к данному тексту.

Имя файла name_file сделано полем класса MainForm на всякий случай: возможно, в более сложном варианте программы понадобится сохранять имя открываемого файла между вызовами обработчиков событий. Здесь это пока не требуется.

При выборе меню Открыть выполняется обработчик событий OpenToolStripMenuItemClick . В начале текста этого метода мы определяем, с какими типами файлов будем работать. Сделать это можно с помощью своеобразного фильтра — свойства Filter для объекта saveFileDialog1 :

saveFileDialog1.Filter = "text files (*.txt)|*.txt";

Свойство Filter представляет собой строку символов, которая состоит из двух частей, разделённых символом | (вертикальная черта). В первой части даётся пояснение о том, какие файлы требуются для отбора (у нас это файлы txt ( " text files (*.txt)" ), а во второй части записывается сам шаблон для отбора, который уже будет обрабатываться в программе (здесь это "*.txt" , т. е. любые файлы с расширением txt ).

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

Сделать такой шаблон несложно, вот пример:

openFileDialog1.Filter = "Все файлы (*.*)|*.*|text files (*.txt)|*.txt|CSarp files (*.cs)|*.cs";

Здесь свойство SupportMultiDottedExtensions означает возможность поддержки нескольких шаблонов выбора. Если оно истинно, то поддержка есть, если ложно — то нет. По умолчанию это свойство имеет значение false ( Надо заметить, что хотя это свойство и имеется, и может изменять своё значение, но и без него создаётся фильтр с несколькими шаблонами . Почему? Пока непонятно. Надо разбираться. Возможно, это глюк от MS. Возможно, это свойство устаревшее. Или его работа зависит от версии Framework).

Новый вид строки фильтра в нашем примере позволяет иметь три варианта шаблонов. Для каждого варианта задаётся пояснение и шаблон, разделённые символом | (вертикальная черта), а сами варианты также разделяются этим символом.

Если фильтр не задавать вообще, то в окне диалога будут показаны все файлы.

После того, как определились с типами открываемых файлов, записываем оператор

Здесь в условии оператора if делается проверка факта: выбрал пользователь файл, подходящий под наш фильтр, или нет. Если « Да », т. е. он выбрал файл и нажал на кнопку « Открыть » в окне диалога, то выполняются действия, записанные в блоке ветви « Да » оператора if . Главное — это получить имя выбранного файла:

Теперь необходимо организовать чтение из выбранного файла. Создаём объект r типа StreamReader , предназначенный для чтения из файла текстовых строк:

StreamReader r = File.OpenText(name_file);

а далее в цикле читаем текст построчно из выбранного файла. Делается это в цикле тем же методом ReadLine() , что ранее мы использовали для ввода данных с консоли. Прочитанные строки добавляем в конец временной переменной — строки t :

while((s = r.ReadLine()) != null)

«Добавка» "\r\n" нужна для того, чтобы обеспечить в последующем переход на новую строку в текстовом поле.

После завершения чтения из файла полученную информацию выводим в текстовом поле и закрываем файл:

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

StreamWriter w = File.CreateText(name_file);

Класс FontDialog

Данный класс предназначен для изменения шрифта текста. Использовать класс предельно просто:

размещаем на форме компонент FontDialog . По-умолчанию он получит имя fontDialog1 ;

в меню добавим ещё один пункт ( Font );

напишем для него обработчик событий.

Вот текст обработчика событий:

// Изменение шрифта текста в диалоговом окне класса FontDialog

void FontToolStripMenuItemClick(object sender, EventArgs e)

Схема обработчика — стандартная. Если пользователь внёс какие-то изменения для шрифта и нажал кнопку « OK » для их подтверждения, то изменённый шрифт тут же можно использовать:

После завершения работы данного обработчика шрифт текста в текстовом поле textBox1 изменится на заданный в окне диалога.

Класс ColorDialog

Этот класс предназначен для изменения цвета. Применение также предельно простое:

размещаем на форме компонент ColorDialog . По-умолчанию он получит имя colorDialog1 ;

в меню добавим ещё один пункт ( Color );

напишем для него обработчик событий.

Вот текст обработчика событий:

// Изменение цвета шрифта текста в диалоговом окне класса ColorDialog

void ColorToolStripMenuItemClick(object sender, EventArgs e)

Можно изменять цвет символов в текстовом поле, как это сделано в данном примере: свойство ForeColor — это цвет символов в текстовом поле textBox1 . А можно было поменять цвет фона для textBox1 :

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

Представляет общее диалоговое окно, в котором отображаются доступные цвета и элементы управления, позволяющие пользователю определять собственные цвета.

Примеры

В следующем примере показано создание нового ColorDialog . В этом примере требуется, чтобы метод вызывался из существующей формы, которая содержит TextBox и Button поместила в нее.

Комментарии

ShowDialogДля создания этого конкретного общего диалогового окна необходимо вызвать наследуемый член. HookProc можно переопределить для реализации определенных функций обработчика диалоговых окон. Используйте Color для получения цвета, выбранного пользователем.

При создании экземпляра ColorDialog некоторые свойства для чтения и записи устанавливаются в начальные значения. Список этих значений см. в конструкторе ColorDialog.

Конструкторы

Инициализирует новый экземпляр класса ColorDialog.

Свойства

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

Возвращает или задает значение, указывающее, отображает ли диалоговое окно в наборе основных цветов все доступные цвета.

Возвращает значение, показывающее, может ли компонент вызывать событие.

Возвращает или задает выбранный пользователем цвет.

Возвращает объект IContainer, который содержит коллекцию Component.

Возвращает или задает набор настраиваемых цветов, отображаемых в диалоговом окне.

Возвращает значение, указывающее, находится ли данный компонент Component в режиме конструктора в настоящее время.

Возвращает список обработчиков событий, которые прикреплены к этому объекту Component.

Возвращает или задает значение, указывающее, видимы ли при открытии диалогового окна элементы управления, используемые для создания пользовательских цветов.

Возвращает базовый дескриптор экземпляра окна (HINSTANCE).

Получает значения для инициализации класса ColorDialog.

Возвращает или задает значение, указывающее, отображается ли в диалоговом окне цветов кнопка справки.

Получает или задает ISite объекта Component.

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

Получает или задает объект, содержащий данные элемента управления.

Методы

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

Освобождает все ресурсы, занятые модулем Component.

Освобождает неуправляемые ресурсы, используемые объектом Component, а при необходимости освобождает также управляемые ресурсы.

Определяет, равен ли указанный объект текущему объекту.

Служит хэш-функцией по умолчанию.

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.

Возвращает объект, представляющий службу, предоставляемую классом Component или классом Container.

Возвращает объект Type для текущего экземпляра.

Определяет процедуру обработки общего диалогового окна, переопределенную, чтобы добавить специальные функции для общего диалогового окна.

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

Создает неполную копию текущего объекта Object.

Создает неполную копию текущего объекта MarshalByRefObject.

Определяет процедуру окна-владельца, которая переопределяется, чтобы добавить специальные функции для общего диалогового окна.

Возвращает всем параметрам значения по умолчанию, последний выбор цвета определяет как черный, настраиваемым цветам возвращает их значения по умолчанию.

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

Запускает общее диалоговое окно с заданным по умолчанию владельцем.

Запускает общее диалоговое окно с указанным владельцем.

Возвращает строку, представляющую объект ColorDialog.

События

Возникает при удалении компонента путем вызова метода Dispose().

Происходит при нажатии пользователем кнопки справки в общем диалоговом окне.

Компонент Windows Forms ColorDialog является стандартным диалоговым окном, в котором пользователь может выбрать цвет из палитры, а также добавить в палитру дополнительные цвета. Это окно аналогично диалоговому окну для выбора цветов в других приложениях Windows.

Внешний вид компонента Windows Forms ColorDialog можно настроить с помощью набора его свойств. В этом диалоговом окне два раздела: в первом представлены основные цвета, во втором — средства для настройки цветов пользователем.

Большинство свойств ограничивают набор цветов, которые пользователь может выбрать в этом диалоговом окне. Для отображения диалогового окна вызывается метод ShowDialog.

Цвет, выбранный в диалоговом окне, возвращается в свойстве Color.

Если для свойства FullOpen задано значение true, пользователь может задавать собственные цвета. Если для свойства FullOpen задано значение false, кнопка "Определить цвет" недоступна и пользователь может работать только со стандартными цветами палитры.

Если для свойства SolidColorOnly задано значение true, пользователь не может выбирать полутона, для выбора доступны только чистые цвета.

Если для свойства AnyColor задано значение true, в диалоговом окне отображаются все доступные цвета в наборе основных цветов.

Создание диалогового окна для работы с цветами

Чтобы создать диалоговое окно для выбора цвета выполните следующие действия:

1. Выберите в Панели элементов на вкладке Диалоговые окна элемент управления ColorDialog и добавьте его на форму в область невидимых элементов:


2. Настройте внешний вид диалогового окна цветов задав нужные значения для свойств FullOpen, AnyColor и SolidColorOnly, например:

colorDialog1.FullOpen = true;

colorDialog1.AnyColor = true;

colorDialog1.SolidColorOnly = false;

Выбор цвета с помощью компонента ColorDialog

1. Отобразите диалоговое окно с помощью метода ShowDialog.

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

3. С помощью свойства Color компонента ColorDialog задайте выбранный цвет.

В приведенном ниже примере обработчик событий Click элемента управления Button открывает компонент ColorDialog. Когда цвет выбран и пользователь нажимает кнопку ОК, фоновый цвет элемента управления Button меняется на выбранный цвет. В примере предполагается, что на форме есть элемент управления Button и компонент ColorDialog.

private void button1_Click(object sender, System.EventArgs e)

button1.BackColor = colorDialog1.Color;

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

Шрифты FontDialog

Компонент Windows Forms FontDialog является стандартным диалоговым окном, аналогичным окну Windows Шрифт. Он используется для предоставления шрифтов, установленных в операционной системе. Этот компонент используется в приложении Windows в качестве простого решения для выбора шрифтов вместо диалогового окна, настраиваемого самостоятельно.

По умолчанию в диалоговом окне отображаются списки "Шрифт", "Стиль" и "Размер"; поля флажков для таких эффектов, как зачеркивание и подчеркивание; раскрывающийся список "Набор символов"; поле, в котором показан образец шрифта. (Набор символов определяет, какие символы доступны для данного шрифта: например, иврит или японский.) Чтобы вывести диалоговое окно шрифтов, следует вызвать метод ShowDialog.

Компонент FontDialog обладает рядом свойств, определяющих его внешний вид. Свойствами, задающими параметры диалогового окна, являются Font и Color. Свойство Font задает шрифт, стиль, размер, набор символов и эффекты, например: Arial, 10pt, style=Italic, Strikeout.

Уроки программирования, алгоритмы, статьи, исходники, примеры программ и полезные советы

Как поменять цвет фона элементов в Windows Forms

В данной статье мы разберем несколько вариантов изменения цвета элементов Windows Forms на примере фона формы Form1 и прочих компонентов.

Способ №1. Изменение цвета в свойствах элемента.

Для многих это самый легкий способ изменения цветовой палитры элементов, так как не надо писать код, всё визуализировано и интуитивно понятно.

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

Выберем для примера какой-либо из цветов, чтобы изменить фон формы:

Легко, незамысловато, понятно.

Следующие способы будут производиться в коде.

Способ №2. Изменение цвета, используя структуру Color.

Это самый простой способ среди кодовых вариаций.

Если мы захотим закрасить фон формы в зеленый цвет, то строка кода будет выглядеть вот так:

При запуске форма будет выглядеть так:

Если понадобится изменить цвет, например, кнопки Button на тёмно-бордовый, код будет таким:

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

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

Способ №3. Изменение цвета, используя метод Color.Argb.

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

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

Словесно это выглядит вот так:

Названиеэлементаформы.BackColor = Color.FromArgb(Насыщенность красного, Насыщенность зеленого, Насыщенность синего);

Чтобы закрасить фон программы в чёрный цвет, используя данный метод, надо написать вот такую строку:

Читайте также: