我在一个DataGridView中加入了"详细信息","修改","删除"三个LinkColumn,都是自定义加的,不是用DataGridView自带的功能.请问我要怎么样才能获取到用户单击的是哪一个呢?就是要获取到相应的单击事件.比如点击"详细信息"的时候,我会从获取到的这个"详细信息"单击事件中弹出一个新的Form.怎么样知道用户单击的是哪一个?是用DataGridView的Cell_Click事件还是什么其他的呢?
望各位大虾指教...在线等...最好能给小弟贴一小段代码..先谢了..

解决方案 »

  1.   

     if(DataGridView1.Columns(e.ColumnIndex).Name = "Names")
       {
           MessageBox.Show("You picked " & DataGridView1.Rows(e.RowIndex). Cells("绑定列字段ID").Value)
       }
      

  2.   

    请问是在哪个事件下面用这个代码处理呢??是Cell_Click吗??
      

  3.   

    LinkColumn是在模板列中添加的LinkButton吗?
    如果是的话,可以给LinkButton添加事件,
    各个Button绑定不同的事件,
    就不用区分了。
      

  4.   

    cell_click就可以了阿,先判断选中的cell的列名,再根据这个去分别处理
      

  5.   

    甚至列名可以用处理类的类名,然后用反射去找处理的类,这样不用写判断语句了
    参考http://kb.cnblogs.com/page/42254/?page=2
      

  6.   

    哦...你说的是asp.net的WEB开发,这个我知道.我现在说的是WinForm下的DataGridView,不是web中的GridView.WinForm中的Link与web的不同,不能给其指定单击事件..呵呵..唉,从Web转来做winform还是有很大的不同啊...
      

  7.   

    通过代理实现事件
    private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
            {
                if (e.ColumnIndex == 2)
                {
                    this.dataGridView2.Controls.Clear();
                    btnDetail.Bounds = this.dataGridView1.GetCellDisplayRectangle(e.ColumnIndex, e.RowIndex, true);
                    btnDetail.Visible = true;
                    btnDetail.Text = this.dataGridView1[e.ColumnIndex, e.RowIndex].Value.ToString();
                    btnDetail.Click += new EventHandler(btnDetail_Click);
                    this.dataGridView1.Controls.Add(btnDetail);
                }
                else
                {
                    btnDetail.Visible = false;
                }
            }
    参考
     
      

  8.   

    谢谢大家的回答..我已经有答案了.采用CeShenBeiWang 的方式解决,winform里应该就是要这样判断的..谢了,给大家全部结分..
    thanks.
      

  9.   

    为什么我写
    if(DataGridView1.Columns(e.ColumnIndex).Name = "Names") 
      { 
          MessageBox.Show("You picked " & DataGridView1.Rows(e.RowIndex). Cells("绑定列字段ID").Value
      } 点不出来啊
      

  10.   

    应该是if(DataGridView1.Columns[e.ColumnIndex].Name = "Names") ;然后检查Names对不对
      

  11.   

            private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                if (dataGridView1.Columns[e.ColumnIndex].Name == "year")
                {
                    MessageBox.Show("You picked " + dataGridView1.Rows[e.RowIndex].Cells["year"].Value.ToString());
                }        }year是字段name
      

  12.   

    那也只是点击单元格啊~能点到里面的LINK控件触发事件吗?求解