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

 if(e.Button == MouseButtons.Left&&e.Clicks==2) {
     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.   

    datagrid的doubleclick只能列头,行头触发,网格上是不行的。
      

  2.   

    在属性的事件里有DataGrid DoubleClick这个事件,你可双击让它自动生成这段代码~~
      

  3.   

    datagrid的doubleclick只能列头,行头触发,网格上是不行的。
    你要想在网格上触发也可以,要这样处理:
    TextBox tb = ((DataGridTextBoxColumn)(this.dataGrid1.TableStyles[0].GridColumnStyles[0])).TextBox;
    tb.DoubleClick+=new EventHandler(this.tb_DoubleClick);
    private void tb_DoubleClick(object sender, System.EventArgs e)
    {
      MessageBox.Show(“”);
    }
      

  4.   

    to cqnimin(): e.Clicks 为何一直都等于1啊,
      

  5.   

    不好意思,我上面的方法是有问题,因为点第二次时焦点就到datagrid的textbox中去了,所以e.Clicks总为1,
    你该一下
    在构造函数的初试化代码后加:
    for(int i=0;i<this.dataGrid1.TableStyles[0].GridColumnStyles.Count;i++)
    {
     ((DataGridTextBoxColumn)(this.dataGrid1.TableStyles[0].GridColumnStyles[i])).TextBox.DoubleClick+=
     new EventHandler(DoubleClick);
    }
    在加一方法:
    private void DoubleClick(object sender, System.EventArgs e)
    {
    this.dataGrid1.Select(this.dataGrid1.CurrentCell.RowNumber);
    }
    我试过了,没问题!