Реклама:

public event EventHandler AllowNavigationChanged;

4.2.6. Куда "кликнул" пользователь?

В ряде случаев полезно знать, по какой части элемента управления DataGrid пользователь щелкнул мышью.

Анализ действий пользователя производят в обработчике события MouseDown элемента управления DataGrid. Этот обработчик принимает параметр e типа System.Windows.Forms.MouseEventArgs. Названный параметр обладает, помимо прочих, свойствами

public int X {get;} public int Y {get;}

Они содержат значения текущих координат указателя мыши. Эти значения используются при вызове метода HitTest элемента управления DataGrid:

public HitTestlnfo HitTest( int X, int Y );

Метод HitTest возвращает объект типа System.Windows.Forms.Data Grid.HitTestlnfo. Свойство Type названного объекта

public DataGrid.HitTestType Type {get;}

возвращает одно из следующих значений перечисления System.Windows.Forms. DataGrid.HitTestType, на основании которых и можно судить о том, по какой части DataGrid щелкнул мышью пользователь.

Значение

По какой части DataGrid щелкнул мышью пользователь

 

Caption

По заголовку

 

Cell

По ячейке

 

ColumnHeader

По заголовку ячейки

ColumnResize

По линии, разделяющей заголовки двух соседних столбцов. В дальнейшем возможно изменить ширину столбца.

None

По обрамлению DataGrid

ParentRows

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

RowHeader

По заголовку строки - в столбце заголовков строк

RowResize

По линии, разделяющей две соседние строки в столбце заголовков строк. В дальнейшем возможно изменить ширину строки

Если пользователь щелкнул мышью по ячейке либо по заголовку строки, номер строки можно получить из свойства объекта НіИєбИпіїо:

public int Row {get;}

Если пользователь щелкнул мышью по ячейке либо по заголовку столбца, номер столбца можно получить из свойства объекта HitTestlnfo:

public int Row {get;}

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

private void dataGrid1_MouseDown(object sender,

System.Windows.Forms.MouseEventArgs e)

{

System.Windows.Forms.DataGrid.HitTestlnfo hti =

dataGrid1.HitTest(e.X,e.Y); string sMsgTxt = ""; switch (hti.Type)

{

case (System.Windows.Forms.DataGrid.HitTestType.Caption):

{

sMsgTxt = "Заголовок"; break;

}

case (System.Windows.Forms.DataGrid.HitTestType.Cell):

{

string sCurrentCellValue =

dataGrid1[hti.Row,hti.Column].ToString(); sMsgTxt = "Ячейка, значение = " + sCurrentCellValue; break;

}

case (System.Windows.Forms.DataGrid.HitTestType.ColumnHeader):

{

sMsgTxt = "Заголовок столбца"; break;

}

case (System.Windows.Forms.DataGrid.HitTestType.ColumnResize):

{

sMsgTxt = "Изменение ширины столбца"; break;

ase (System.Windows.Forms.DataGrid.HitTestType.None):

sMsgTxt = "Ничего"; break;


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