private void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) 
 

 
     System.Drawing.Point pt = new Point(e.X, e.Y); 
 
     DataGrid.HitTestInfo hti = dataGrid1.HitTest(pt); 
 
     if(hti.Type == DataGrid.HitTestType.Cell) 
 
     { 
 
          dataGrid1.CurrentCell = new DataGridCell(hti.Row, hti.Column); 
 
          dataGrid1.Select(hti.Row); 
 
     } 
 

 

解决方案 »

  1.   

    How can I select the entire row when the user clicks on a cell in the row?
    http://www.syncfusion.com/FAQ/WinForms/FAQ_c44c.asp#q689q
      

  2.   

    而我希望用键盘也是选中的一整行。
    顺便问一句有什么方法禁止调整Column的宽度.
    还有我觉得要实现鼠标选一整行也没必要如此麻烦嘛
    dgridAccount.CurrentCell = 
        new DataGridCell(dgridAccount.CurrentCell.RowNumber,dgridAccount.CurrentCell.ColumnNumber); 
    dgridAccount.Select(dgridAccount.CurrentRowIndex);
      

  3.   

    我觉得是不还有更好的办法,就象Click 了RowHead一样
      

  4.   

    你可以让DataGrid响应CurrentCellChanged事件,这样就可以了,不管鼠标还是键盘选择都能捕捉到的,SDK文档上有介绍的!
      

  5.   

    To: siyfarrow() 
    我就是这样做的,但是CurrentCell却总是只有文本部分被选中,空白部分却是灰色,也无法改变它的颜色,我现在要做的就是只要把空白部分也设为高亮的颜色就可以了
      

  6.   

    我只是觉得奇怪,这是一个很常用的功能啊,为什么DataGrid都没有默认提供呢,还要自己想办法,也许是我用惯了Delphi的缘故
      

  7.   


         System.Drawing.Point pt = new Point(e.X, e.Y); 
     
         DataGrid.HitTestInfo hti = dataGrid1.HitTest(pt); 
     
         if(hti.Type == DataGrid.HitTestType.Cell) 
     
         { 
     
              dataGrid1.CurrentCell = new DataGridCell(hti.Row, hti.Column); 
     
              dataGrid1.Select(hti.Row); //行
            //  dataGrid1.Select(hti.Column); //列
     
         } 写在mouse_up事件下面
      

  8.   

    grdOrders.Select(grdOrders.CurrentCell.RowNumber)
      

  9.   

    其实我是想实现DataGrid中CurrentRowIndex对应的行始终保持高亮显示,很多人都是用的继承DataGridTextBoxColumn类来实现的,我觉得太麻烦,一直以为会有更简单的办法,至于楼上所说的方法,只能实现鼠标选择,如果是用键盘导航就不行了,而且一旦DataGrid失去焦点,其中的行也就不高亮显示了
      

  10.   

    选中整行事件:
    private void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e){ 
       dataGrid1.Select(dataGrid1.CurrentRowIndex);
    }
    用键盘的话,再Currentcellchanged事件里yong
    private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
    {
    dataGrid1.Select(dataGrid1.CurrentRowIndex);
    }可以选定整行,但效果不是很好
      

  11.   

    现在的问题是CurrenCell始终不能高亮显示
      

  12.   

    你说的是不是Cell里总有光标在,不能高亮显示?
    有一种方法:重画DataGird就不会出现了
      

  13.   

    private void dataGrid1_CurrentCellChanged(object sender, System.EventArgs e)
    {
    dataGrid1.Select(dataGrid1.CurrentRowIndex);
    }
      

  14.   

    看来大家伙都还没实现啊,只有自己写DataGrid了