¨ Добавьте в ToolStrip элемент типа ToolStripLabel и установите свойства: (Name)=sFind, Text=Find.
¨ Добавьте выпадающий список (элемент ToolStripComboBox). Он будет помнить искомые строки текста. Присвойте ему имя: comboFind.
¨ Положите на форму элемент типа DataGridView (он расположен на вкладке Data панели Toolbox). Идентифицируйте его (см. поле Name окна свойств) именем studsGrid.
¨ Положите на форму элемент типа StatusStrip c именем status. В коллекцию дочерних элементов StatusStrip добавьте элемент типа ToolStripStatusLabel c именем statusMsg.
В планку статуса (точнее, ее метку statusMsg) мы будем выводить сообщения. Например, при нажатии кнрпки btnFindNext мы собираемся осуществить поиск заданного текста в текущей колонке DataGridView (или колонке DataTable в памяти). Если текст не найден, то в строке статуса появится сообщение Not Found. Искомый текст пользователь вводит, или выбирает в окне выпадающего списка comboFind.
Для удобства пользования кнопками панели инструментов установите свойства Text и ToolTipText в значения: Open, Save и FindNext. Измените значения свойств Image (сами изображения для кнопок), нажмите кнопку Import и импортируйте картинку из вашей любимой папки с картинакми (такую пора завести) или папки со стандартными изображениями, которая поставляется вместе со студией:
C:\Program Files\Microsoft Visual Studio 8\Common7\VS2005ImageLibrary\..
Реакции на нажатие новых кнопок (делегаты с заданиями) вы можете создать двумя разными способами.
¨ Методом двойного щелчка по кнопкам toolStrip вы создаете стандартные методы (типа button_Clicked).
¨ Выбрав в окне Properties для toolStrip событие ItemClicked, вы создаете один метод, реагирующий на все кнопки. Второй параметр этого метода несет информацию о нажатой кнопке (или другой сущности из коллекции ToolStripItemCollection).
Рассмотрим второй способ. Код обработчика события (toolStrip_ItemClicked) имеет стандартную структуру, которая использовалась и ранее (при работе с Toolbar).
void toolStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
switch (e.ClickedItem.Text)
{
case "Open": Open(FileDlg(true)); break;
case "Save": Save(FileDlg(false)); break;
case "FindNext": Find(); break;
}
}
Вызываемые методы предстоит создать. Механизм Intellisense рвется в бой и предлагает создать временные заглушки для отсутствующих методов. Позвольте ему это сделать. В дополнение к данным, которые были сгенерированы дизайнером студии, вручную введите в класс формы объявления нескольких переменных. Добавьте в класс объявление объекта ds класса DataSet. Мы собираемся запомнить имя открытого файла в переменной fileName, поэтому добавьте переменную с таким именем и инициализируйте ее в конструкторе.
public MainForm()
{
InitializeComponent();
InitDataSet();
fileName = "Studs.xml"; // Имя файла по умолчанию
}
Добавьте обработчик события первоначальной загрузки формы и в ней определите позицию формы на рабочем столе. Это делает метод SetDesktopLocation класса Form. Просмотрите справку и убедитесь, что его надо вызывать после того, как форма показалась на экране. Многие другие действия с элементами формы следует производить после того, как отработал конструктор.
void MainForm_Load(object sender, EventArgs e)
{
SetDesktopLocation(10, 10); // Позиция формы на рабочем столе
}
Сейчас в набор данных DataSet мы программным способом введем две таблицы: Studs и Exams и заполним их данными. На этапе выполнения пользователь сможет дополнить таблицы произвольными данными, затем сохранить весь набор в файле XML-формата (сделаем это чуть позже). Перечисленные действия удобно выполнить в отдельном методе, назовем его InitDataSet.
void InitDataSet()
{
ds = new DataSet("StudentsSet"); // Источник данных (аналог базы данных)
DataTable studs = new DataTable("Studs");
SetPrimaryColumn(studs); // Этот метод создадим позже
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.