收录日期:2020/10/25 08:12:05 时间:2016/06/04 04:11:19 标签:C#
请问用鼠标点击DataGrid(Winform)某一个单元格如何得到单元格的值
另外,如果这个单元格中是CheckBox,如何得到它是否选中那?
谢谢
Private Sub DataGrid1_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
    Dim myGrid As DataGrid = CType(sender, DataGrid)
    Dim hti As System.Windows.Forms.DataGrid.HitTestInfo
    hti = myGrid.HitTest(e.X, e.Y)
    Select Case hti.Type
    Case System.Windows.Forms.DataGrid.HitTestType.None 
       Console.WriteLine("You clicked the background.")
    Case System.Windows.Forms.DataGrid.HitTestType.Cell 
       Console.WriteLine("You clicked cell at row " & hti.Row & ", col " & hti.Column)
    Case System.Windows.Forms.DataGrid.HitTestType.ColumnHeader
       Console.WriteLine("You clicked the column header for column " & hti.Column)
    Case System.Windows.Forms.DataGrid.HitTestType.RowHeader 
       Console.WriteLine("You clicked the row header for row " & hti.Row)
    Case System.Windows.Forms.DataGrid.HitTestType.ColumnResize
       Console.WriteLine("You clicked the column resizer for column " & hti.Column)
    Case System.Windows.Forms.DataGrid.HitTestType.RowResize 
       Console.WriteLine("You clicked the row resizer for row " & hti.Row)
    Case System.Windows.Forms.DataGrid.HitTestType.Caption
       Console.WriteLine("You clicked the caption")
    Case System.Windows.Forms.DataGrid.HitTestType.ParentRows 
       Console.WriteLine("You clicked the parent row")
    End Select
 
 End Sub
C#的改改就可以了
ItemDataBound/ItemCommand:
e.Item.Cells [i],获取datagrid里某一列的值

如果是checkbox,你可以:
CheckBox cb = (CheckBox)e.Item.Cells [i].Controls [0];
取cb.checked就可以了。
wangsaokui的转换后:
private void DataGrid1_MouseDown(object sender, MouseEventArgs e) 

 DataGrid myGrid = ((DataGrid)(sender)); 
 System.Windows.Forms.DataGrid.HitTestInfo hti; 
 hti = myGrid.HitTest(e.X, e.Y); 
 if (hti.Type == System.Windows.Forms.DataGrid.HitTestType.None) { 
   Console.WriteLine("You clicked the background."); 
 } 
else if (hti.Type == System.Windows.Forms.DataGrid.HitTestType.Cell) { 
   Console.WriteLine("You clicked cell at row " + hti.Row + ", col " + hti.Column); 
 } 
else if (hti.Type == System.Windows.Forms.DataGrid.HitTestType.ColumnHeader) { 
   Console.WriteLine("You clicked the column header for column " + hti.Column); 
 } 
else if (hti.Type == System.Windows.Forms.DataGrid.HitTestType.RowHeader) { 
   Console.WriteLine("You clicked the row header for row " + hti.Row); 
 } 
else if (hti.Type == System.Windows.Forms.DataGrid.HitTestType.ColumnResize) { 
   Console.WriteLine("You clicked the column resizer for column " + hti.Column); 
 } 
else if (hti.Type == System.Windows.Forms.DataGrid.HitTestType.RowResize) { 
   Console.WriteLine("You clicked the row resizer for row " + hti.Row); 
 } 
else if (hti.Type == System.Windows.Forms.DataGrid.HitTestType.Caption) { 
   Console.WriteLine("You clicked the caption"); 
 } 
else if (hti.Type == System.Windows.Forms.DataGrid.HitTestType.ParentRows) { 
   Console.WriteLine("You clicked the parent row"); 
 } 
}
mark
MouseDown或者MouseUp事件里就可以直接得到这个值
DataGridCell cc = dataGrid1.CurrentCell;
DataGridTextBoxColumn dgt = (DataGridTextBoxColumn) dataGrid1.TableStyles[0].GridColumnStyles[cc.ColumnNumber];
string s = dgt.TextBox.Text;

Delphi7中的DBChart在Delphi8中是否没有了啊? 庆祝改昵称成功! 请问是否可以在一条SQL语句中使用多个transaction 对象 怎样使读取数据库出来的字动起来啊? cricheditctrl简单问题。为什么richedit不能响应onclick事件。 .NET可以涵盖COM所有得内容吗? 菜鸟送分:有关STRINGGRID的问题。 UpdateData 怎么引起了 checkbox的显示从打叉到无叉 阿?郁闷 发布新做的一个影院系统:)http://www.hlbr.com.cn/movie/ vb项目中引入C#项目出现了问题? 二选一,中国足球和还珠格格,你选择看哪样? 100分求,显示这个datagrid样式的样式表? XML中以前没注意到的问题,看有没有人和我一样!!! 外包首页设计 我函数的result变量怎么不能使用? resin中怎么放置servlet 外包首页设计 大家帮忙看一下这个怎么写:把我的vc的程序设置为一个文件的打开方式,如何得到打开的文件名! 网页背景图片地址存在数据库里的,怎么读出来设置为背景? 有了解vc++的进来给俺说一声。。。 内向程序员被MM明确拒绝了。。。 运行 Java Applet 要什么支持 cb6.0 在xp home editon 下出错??? 求助!在线等等~ 菜鸟提问:关于SQL Server中的时间涵数的问题.在线等急! 怎么样清理数据库的日志 大侠们帮帮忙,treectrl中item的字体颜色. 怎么样清理数据库的日志 跪求如下几本书: 如何计算用DrawString绘制的字符串象素长度和高度???