Лекция: CheckBox

Чекбоксы относятся к так называемым кнопкам отложенного действия, т. е. их нажатие не запускает немедленно какого-либо процесса. С их помощью пользователь устанавливает определенные параметры, результат действия которых скажется после запуска других элементов управления. Добавим в приложение Notepad C# форму для поиска заданного текста, в которой будут использованы элементы управления CheckBox. В окне Solution Explorer щелкаем правой кнопкой мыши на названии проекта — NotepadCSharp — и в появившемся меню выбираем пункт Add Windows Form. Называем новую форму FindForm.cs и устанавливаем следующие свойства:

FindForm, форма, свойство Значение
Name FindForm
FormBorderStyle FixedToolWindow
Size 328; 112
Text Find

Располагаем на форме TextBox, две кнопки и два элемента CheckBox так, как показано на рис. рис. 2.23:

Рис. 2.23.Форма FindForm в режиме дизайна

Устанавливаем следующие свойства элементам управления:

TextBox, свойство Значение
Name txtFind
Size 192; 20
Text  
checkBox1, свойство Значение
Name cbMatchCase
Text Match &Case
       

 

checkBox2, свойство Значение
Name cbMatchWhole
Text Match &whole word
button1, свойство Значение
Name btnOK
DialogResult OK
Text &OK
       

 

button2, свойство Значение
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:

// Создаем перечисление, возвращающее параметр FindCondition

public RichTextBoxFinds FindCondition

{

get

{

//Выбраны два чекбокса

if (cbMatchCase.Checked && cbMatchWhole.Checked)

{

// Возвращаем свойство MatchCase и WholeWord

return RichTextBoxFinds.MatchCase| RichTextBoxFinds.WholeWord;

}

//Выбран один чекбокс

if (cbMatchCase.Checked )

{

// Возвращаем свойство MatchCase

return RichTextBoxFinds.MatchCase;

}

//Выбран другой чекбокс

if (cbMatchWhole.Checked )

{

// Возвращаем свойство WholeWord

return RichTextBoxFinds.WholeWord;

}

//Не выбран ни один чекбокс

return RichTextBoxFinds.None;

}

}

Листинг 2.11.

И наконец, создаем свойство FindText, возвращающее в качестве переменной поиска введенный текст в текстовое поле формыFindForm:

public string FindText

{

get{return txtFind.Text;}

set{txtFind.Text = value;}

}

Запускаем приложение. Выбирая различные варианты, можно однократно искать заданное слово (рис. 2.25):


Рис. 2.25.Поиск слова в тексте

еще рефераты
Еще работы по информатике