在DataGridView的Click事件中写如下代码
MessageBox.Show(dataGridView1.CurrentRow.Index.ToString());可是在我点击DataGridView的标题栏时也弹出了一个数字,这个数字是我最后点击的那一行。不想让点击标题栏也触发事件,怎么处理?

解决方案 »

  1.   

    用CellContentClick事件
    Click事件是点击控件就会触发
    CellContentClick是点击单元格
      

  2.   

    Click事件应该是无论是gridview控件的任何区域都会触发的,你既然要对应到行才让它触发,那么你可以先找到对应的行。如果找不到行,就不触发它了。
      

  3.   

    那就用CellClick
            private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                if (e.RowIndex >= 0)
                {
                    //你要的操作    
                }
            }
      

  4.   

    找一下点击标题栏时候的获得的Index值的规律,然后想办法加一个判断,当点击的是标题栏的时候不执行弹出窗口操作,或者干脆提示说点击到了标题栏。
      

  5.   

    楼主的标题栏是指什么,列头还是行头,我用CellClick事件的时候点击行头是选中一行并触发事件,但是点击列头并不会触发事件
      

  6.   

    if (e.RowIndex >= 0)
    你确定你跟我写的一样?
    主要是这句话,你可以试一下!
    header的index是-1!
      

  7.   

    CellContentClick事件是点击单元格的内容时才会触发,我现在要的效果是:点击一行要触发。不管点击的是不是内容还是这个单元格的其它部分。但是 不是标题哦!
      

  8.   

    if (e.RowIndex >= 0)
      

  9.   


    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                if (e.RowIndex >= 0 && e.ColumnIndex >= 0)
                {
                    MessageBox.Show(e.RowIndex.ToString()+ " , " + e.ColumnIndex.ToString());
                }
            }
      

  10.   


    private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e) 
            { 
                if (e.RowIndex >= 0 && e.ColumnIndex != -1) 
                { 
                    //你要的操作    
                } 
            }9楼的方法是可行的,改成这样点击行头的时候也就不会触发事件了