Реклама:

Создадим в форме Forml кнопку эллипса с именем btnEllips, заголовком и произвольной длиной и шириной.

Зададим следующий обработчик события смены текущей ячейки в объекте dataGridl формы Forml:

private void dataGrid1_CurrentCellChanged(object sender,

System.EventArgs e)

{

//---номер столбца выбранной ячейки грида

int nCl = dataGridl.CurrentCell.ColumnNumber;

//---выбрана ячейка в столбце "Факультет"

if (nCl == 2) {

//---помещаем кнопку в левый край текущей ячейки,

//---приводя в соответствие с размером ячейки,

//---и затем визуализируем

btnEllips.Left = dataGrid1.GetCurrentCellBounds().Right - btnEllips.Width;

btnEllips.Top = dataGrid1.GetCurrentCellBounds().Top;

btnEllips.Height = dataGrid1.GetCurrentCellBounds().Height;

btnEllips.Visible = true;

//---если значения в ячейке нет сразу вызываем форму

//---выбора факультета

if (dataGrid1[dataGrid1.CurrentCell].ToString().Trim() == "")

{

eSelFakultet.ShowDialog();

//---если пользователь выбрал факультет, то заносим его

//---в текущую ячейку

if (eSelFakultet.SelectedFakulted != "") {

dataGrid1[dataGrid1.CurrentCell] =

eSelFakultet.SelectedFakulted;

}

}

}

else

//---выбрана ячейка в другом столбце

{

btnEllips.Visible = false;

} }

Зададим следующий обработчик нажатия кнопки эллипса:

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

{

eSelFakultet.ShowDialog();

if (eSelFakultet.DialogResult == DialogResult.OK)

{

dataGrid1[dataGrid1.CurrentCell] =

eSelFakultet.SelectedFakulted;

}

}

Запустим приложение и посмотрим, каков приведенный выше код в действии. Перейдем в dataGrid! (форма Form1) на ячейку в столбце Факультет (рис. 4.72).

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 4.72

Нажмем кнопку эллипса, что вызовет форму fSelFakultet (рис. 4.73). Выберем Гуманитарный факультет и нажмем кнопку Выбрать. Управление будет возвращено в Form1 и выбранный факультет будет помещен в текущую ячейку dataGrid1 (рис. 4.74).

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 4.73

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 4.74

4.2. Выделение записей в Ба1аОпс1

В сетке данных DataGrid можно выделить одну или несколько записей. Выделенные записи представляются цветом и(или) фоном, отличным от цвета и(или) фона остальных записей (рис. 4.75).

Шумаков П. В.  ADO.NET и создание приложений баз данных в среде Microsoft Visual Studio .NET. Руководство разработчика с примерами на C#.

рис. 4.75

Цель выделения:

• если она выполняется программно, значит, приложению нужно привлечь внимание пользователя к отдельным записям;

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

Для "ручной" отметки записей в DataGrid необходимо щелкнуть указателем мыши в соответствующей ячейке столбца заголовков строк. При этом, если необходимо отметить несколько записей подряд, следует, не отпуская левой кнопки мыши, вести указатель мыши вниз, пока не будет выделено желаемое число строк. Если же нужно выделить строки вразбивку (т. е. не непрерывным диапазоном), следует отметить первую строку из выделяемых и, удерживая нажатой кнопку Ctrl на клавиатуре компьютера, выделить остальные строки.

Для программного выделения в сетке данных строки с индексом rowIndex используется метод Select элемента управления DataGrid: public void Select( int rowIndex );


⇐ Предыдущая страница| |Следующая страница ⇒