在winform下,我的程序现在只能靠点击datagrid 的窗体触发dataGrid1_DoubleClick(object sender, System.EventArgs e)事件,请问要怎么样才能在双击绑定到datagrid中的某一行数据的时候触发这个双击事件????请朋友们帮忙看看?谢谢

解决方案 »

  1.   

    选定一行.
    加上鼠标事件:
    private void imageShow_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    System.Drawing.Point   pt   =   new   Point(e.X,   e.Y);     
    DataGrid.HitTestInfo   hti   =   this.imageShow.HitTest(pt);     
    if(hti.Type   ==   DataGrid.HitTestType.Cell)     
    {   
    this.imageShow.CurrentCell   =   new   DataGridCell(hti.Row,   hti.Column);   
    this.imageShow.Select(hti.Row);   
    }  
    }鼠标双击事件:
    private void imageShow_DoubleClick(object sender, System.EventArgs e)
    {
    // int   y = imageShow.CurrentCell.ColumnNumber;   
    int   x = imageShow.CurrentCell.RowNumber;   
    MessageBox.Show(imageShow[x,0].ToString());
    }
    就这样就可以,触发双击事件,
      

  2.   

    首先,谢谢zhangliu_521(浪客)兄的代码,但是不知怎么的在点击datagrid的某行数据的时候就是触发不了DoubleClick这个事件
      

  3.   

    捕捉DataGrid的双击事件
    http://dotnet.aspx.cc/article/c83c3a4b-8571-4ce6-fbac-35dc28d14389/read.aspx
      

  4.   

    其实private void imageShow_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)是一章眼法...
    LZ可以直接用
    private void imageShow_DoubleClick(object sender, System.EventArgs e)看看能不能得到,
      

  5.   

    以上朋友提到的方法都能办到,但是都是在点击datagrid这个控件本身的情况下,在点击绑定都他上面的数据时就不行了,我想的是在点击datagrid的某行数据的时候能触发,请朋友们在帮忙看看
      

  6.   

    Double_Click事件里,对当前活动的行或列进行处理不行吗?
      

  7.   

    private void dataGrid1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
    {
    System.Drawing.Point   pt   =   new   Point(e.X,   e.Y);     
    DataGrid.HitTestInfo   hti   =   this.dataGrid1.HitTest(pt);     
    if(hti.Type   ==   DataGrid.HitTestType.Cell)     
    {   
             this.dataGrid1.CurrentCell   =   new   DataGridCell(hti.Row,   hti.Column);   
    this.dataGrid1.Select(hti.Row);   
    }
    }private void dataGrid1_DoubleClick(object sender, System.EventArgs e)
    {
    int row=this.dataGrid1.CurrentCell.RowNumber;
    MessageBox.Show(this.dataGrid1[row,0].ToString());
    }我是这样做的,可是还是只能点datagrid 控件的时候才能获取到值,点绑定到其中的数据确不能,为什么?
      

  8.   

    this.dataGrid1.CurrentCell.RowNumber
    this.dataGrid1.CurrentCell.ColumnNumber
    看看这两个属性能不能得到当前点击的行,列号。
      

  9.   

    bwguang(bwguang) 
    值是能用this.dataGrid1.CurrentCell.RowNumber
    this.dataGrid1.CurrentCell.ColumnNumber获取的,在MouseUp事件中是能用这两个来获取值得
    但是在双击事件中不行,没有触发双击事件
      

  10.   

    二   捕获DataGrid里的双击事件,本来很简单的问题,可是如果你只对DataGrid的DoubleClicked里写程序的话,你就会发现一个问题,在DataGrid的cell里双击时没有反应,这是因为在DataGrid里有TextBox组成,所以你就需要捕获TextBox的DoubleClicked事件,但你完成这一步时,看看效果咋样,如果你仔细的话,你就又会发现一个问题,当光标还没有在一个单元格时,双击该单元格,发现了什么?没有任何反应,明明双击了吗,为啥呢?这是因为DataGrid把这个双击操作分解了,分为两个单击,第一个使该单元格获得光标,第二个为单击事件,所以你的双击就没有反应了,所以我们要做的就是把这个动作当作双击事件来处理,这样就达到我们的目的了。所以捕获一个双击事件就要做三件事。下面是一段代码。   
        
      第一步:   
        
      private   void   dgRole_DoubleClick(object   sender,System.EventArgs   e)   
        
                      //dgRole为DataGrid   
        
          
        
                      {   
        
                              this.frmRoleRightShow();   //我们双击要做的事   
        
                      }   
        
      第二步:   
        
      private   void   TextBox_DoubleClick(object   sender,System.EventArgs   e)   
        
                      {   
        
                              this.frmRoleRightShow();   
        
                      }   
        
      第三步:   
        
      DateTime   gridMouseDownTime;   
        
      private   void   dgRole_MouseDown(object   sender,System.Windows.Forms.MouseEventArgs   e)   
        
                      {   
        
                              gridMouseDownTime=DateTime.Now;     //纪录时间   
        
                      }   
        
      private   void   TextBox_MouseDown(object   sender,MouseEventArgs   e)   
        
                      {   
        
                              if(DateTime.Now   <   gridMouseDownTime.AddMilliseconds(SystemInformation.DoubleClickTime))   
        
      //如果两次单击的时间小于系统的双击时间,我们就把它认为是双击操作   
        
                              {   
        
                                      this.frmRoleRightShow();   
        
                              }   
        
                      }   
      

  11.   

    1、首先,双击cell根本不会触发你的DataGrid_DoubleClick事件,所以不要在这个地方费工夫了。
    2、取得当前行的语法是:DataRow currentRow = ((DataRowView)this.BindingContext[dataset_name, "datatable_name"].Current).Row;刚刚认真看了看DataGrid_DoubleClick事件.
      

  12.   

    private void dataGridView1_MouseDoubleClick(object sender, MouseEventArgs e)
            {
                DataGridView.HitTestInfo hitTest = dataGridView1.HitTest(e.X, e.Y);            if (hitTest.Type != DataGridViewHitTestType.Cell)
                {
                    return;
                }            MessageBox.Show("Clicked");           
            }