我想在点击DataGrid上某行单元格时自动选中该行,并使该行成为当前行。现在点击鼠标左键时,单元格总是获得焦点,该行并不反选加亮,点击鼠标右键时,可以反选当前点击单元格所在的行但并未将其设为当前行,并且在点击其他行上的单元格时,原行依然是加亮状态,郁闷。代码如下:
private void projectdataGrid_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{

DataGrid myGrid = (DataGrid) sender;
        System.Windows.Forms.DataGrid.HitTestInfo hti;
hti = myGrid.HitTest(e.X, e.Y);
if(hti.Type ==System.Windows.Forms.DataGrid.HitTestType.Cell)
{
myGrid.Select(hti.Row);

}
}

解决方案 »

  1.   

    很简单的,DataGrid重载了Select方法,只要传入要选择的行号就可以了。
    myGrid.Select(hti.Row);
    试试看。
    p.s.我发现.net framework的确很有问题,很多地方都不一致,语义、语法、函数,好多地方感觉很粗糙的,就是说本来应该是同一类型的对象应该有相同或相似的方法、属性命名,但偏不,所以很难找。:P
      

  2.   

    在单元格变化事件(CurrentCellChanged)中加:
    this.projectdataGrid.Select((this.projectdataGrid.CurrentCell.Row));应该可以的!
      

  3.   

    单元格变化事件(CurrentCellChanged)中加:
    this.projectdataGrid.Select((this.projectdataGrid.CurrentCell.Row));应该可以的!==========================完全正确