CheckBox
Чекбоксы относятся к так называемым кнопкам отложенного действия, т. е. их нажатие не запускает немедленно какого-либо процесса. С их помощью пользователь устанавливает определенные параметры, результат действия которых скажется после запуска других элементов управления. Добавим в приложение Notepad C# форму для поиска заданного текста, в которой будут использованы элементы управления CheckBox. В окне Solution Explorer щелкаем правой кнопкой мыши на названии проекта — NotepadCSharp — и в появившемся меню выбираем пункт Add Windows Form. Называем новую форму FindForm.cs и устанавливаем следующие свойства:
Name | FindForm |
FormBorderStyle | FixedToolWindow |
Size | 328; 112 |
Text | Find |
Располагаем на форме TextBox, две кнопки и два элемента ChekBox так, как показано на рис. рис. 2.23:
Рис. 2.23. Форма FindForm в режиме дизайна
Устанавливаем следующие свойства элементам управления:
Name | txtFind |
Size | 192; 20 |
Text |
Name | cbMatchCase |
Text | Match &Case |
Name | cbMatchWhole |
Text | Match &whole word |
Name | btnOK |
DialogResult | OK |
Text | &OK |
Name | btnCancel |
DialogResult | Cancel |
Text | &Cancel |
Выбор первого чекбокса — cbMatchCase — будет устанавливать поиск слова с учетом регистра, второго – cbMatchWhole — поиск по целому слову. Обратите внимание на свойство кнопок DialogResult — выбирая соответствующие свойства, мы устанавливаем обработчики для кнопок без обращения к коду. Значение ОК закрывает форму, выполняя установленное действие, — в данном случае — поиск; значение Cancel просто закрывает форму. В главном меню формы frmmain добавляем разделительную линию и пункт Find и устанавливаем значения свойств: Name — mnuFind, Shortcut — CtrlF, Text — &Find. Переходим в обработчик этого пункта:
private void mnuFind_Click(object sender, System.EventArgs e) { //Создаем новый экземпляр формы FindForm FindForm frm = new FindForm(); //Если выбран результат DialogResult.Cancel, закрываем форму (до этого //мы использовали DialogResult.OK) if(frm.ShowDialog(this) == DialogResult.Cancel) return; ////Переключаем фокус на данную форму. blank form = (blank)this.ActiveMdiChild; ////Указываем, что родительской формой является форма frmmain form.MdiParent = this; //Вводим переменную для поиска в определенной части текста — //поиск слова будет осуществляться от текущей позиции курсора int start = form.richTextBox1.SelectionStart; //Вызываем предопределенный метод Find элемента richTextBox1. form.richTextBox1.Find(frm.FindText, start, frm.FindCondition); }
Основой поиска будет метод Find элемента управления RichTextBox. Нам остается лишь указать параметры поиска, которые могут принимать различные значения (рис. 2.24):
Рис. 2.24. Параметры метода Find. Щелкая на маленькую кнопку всплывающей подсказки Intel Sense, выбираем разные подсказки для групп передаваемых параметров
В коде формы FindForm осталось реализовать логику работы, зависящую от положения элементов CheckBox:
Листинг 2.11.
(html, txt)
И наконец, создаем свойство FindText, возвращающее в качестве переменной поиска введенный текст в текстовое поле формы FindForm:
public string FindText { get{return txtFind.Text;} set{txtFind.Text = value;} }
Запускаем приложение. Выбирая различные варианты, можно однократно искать заданное слово (рис. 2.25):
Рис. 2.25. Поиск слова в тексте