Реклама:

Это свойство возвращает объект типа System.Drawing.Rectangle (прямоугольник), соответствующий текущей ячейке. Обратившись к свойствам

public int Left {get;} public int Top {get;} public int Height {get; set;} public int Width {get; set;}

полученного прямоугольника, мы узнаем значения координат X и У левого угла ячейки и ее высоту и ширину. Этого достаточно для наложения объекта ComboBox на текущую ячейку DataGrid.

MycomЬoBox.Left = dataGrid1.GetCurrentCe11BoundsO.Left; MycomЬoBox.Top = dataGrid1.GetCurrentCe11BoundsO.Top; MycomЬoBox.Height =

dataGrid1.GetCurrentCe11Bounds().Height;

MycomЬoBox.Width = dataGrid1.GetCurrentCe11BoundsO.Widt]!;

Одновременно в качестве текущего значения в списке ComboBox устанавливают содержимое текущей ячейки DataGrid:

if (dataGrid1[dataGrid1.CurrentCe11].ToString() != "")

{

MycomboBox.Text = dataGrid1[dataGrid1.CurrentCell].ToString();

}

Наконец, при выборе какого-либо значения в списке ComboBox его нужно поместить в текущую ячейку DataGrid - ту самую, которую ComboBox накрывает собою:

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

{

dataGrid1[dataGrid1.CurrentCell] =

MycomboBox.Items[MycomboBox.SelectedIndex];

4.2.12. Кнопка эллипса в ячейке Ба1аОпс1

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

Типичным примером может служить выбор значения из элемента управления DataGrid, размещенного в другой форме.

Подобную задачу принято решать, помещая в ячейку DataGrid экранную кнопку (объект типа TextButton) с текстовым обозначением Ее называют также кнопкой эллипса. Эта кнопка визуализируется, только когда мы щелкаем мышью в ячейке, переводя ее в состояние редактирования (рис. 4.70).

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

рис. 4.70

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

Пример. Пусть в приложении имеется форма fSelFakultet (рис. 4.71), представляющая доступ к записям таблицы Fakultety (факультеты вуза) набора данных ndl.

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

рис. 4.71

Пусть у формы fSelFakultet есть свойство SelectedFakulted, выдающее во внешний мир строковое значение приватной переменной SelectedFakulted:

public class fSelFakultet : System.Windows.Forms.Form

{

private string sSelectedFakulted = "";

//---выбранный факультет (свойство)

public string SelectedFakulted { get {return sSelectedFakulted;}

}

}

Обработчик нажатия экранной кнопки Выбрать помещает в приватную переменную sSelectedFakulted формы значение Fakultet столбца текущей записи таблицы Fakultety набора данных ndl: //---нажата кнопка "Выбрать"

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

{

sSelectedFakulted =

nd1.Fakultety.Rows[this.BindingContext[nd1, "Fakultety"].Position]["Fakultet"].ToString();

}

Рассмотрим другую форму приложения, Forml, где задан элемент управления dataGridl, связанный с таблицей Kaf набора данных ndl. Когда пользователь попадает в столбец Факультеты, должна появляться кнопка эллипса, по нажатии которой происходит вызов рассмотренной выше формы fSelFakultet, выбор факультета и перенос его в текущую ячейку - ту самую, в которой находится кнопка эллипса.


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