在Visual Studio 2010中。
创建Visual C#“窗体表单应用程序”项目
在表单上放置一个DataGridView组件并添加一些列。
创建鼠标点击事件:
private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (dataGridView1.CurrentRow.HeaderCell.Selected)
{
MessageBox.Show("Header Selected");
}
if (dataGridView1.CurrentRow.HeaderCell.State != DataGridViewElementStates.None)
{
MessageBox.Show("Not None");
}
}
在运行时单击行标题选择一行,但从不显示任何MessageBox。
为什么?
答案 0 :(得分:1)
要检查是否单击了行标题单元格,这些选项中的任何一个都可以正常工作:
0
CellClick
事件并检查def query_for(stat, per_minute: false)
base = "cast(payload ->> '#{stat}' as float)"
return base unless per_minute
base + " / (cast(payload ->> 'time_played' as float) / 60)"
end
DataGridView
CellMouseClick
事件并检查e.ColumnIndex=1
DataGridView
RowHeaderMouseClick
事件
<强>代码强>
e.ColumnIndex=1
为什么行标题单元格的选定属性为False?
这是以这种方式设计的,并记录在相关msdn文档的备注部分中:
DataGridViewHeaderCell.Selected Property
此属性对标题单元格没有意义。
以下是DataGridViewHeaderCell的Selected属性的源代码,它是DataGridViewRowHeaderCell的基本calss,因为您看到它始终返回false。
DataGridView
如何检查行标题单元格的其他属性?
如果您可以获取每一行或使用行标题单元格的属性,则使用HeaderCell属性。例如,在上面提到的任何事件中,您可以输入以下代码:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex == -1)
MessageBox.Show(e.RowIndex.ToString());
}
private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.ColumnIndex == -1)
MessageBox.Show(e.RowIndex.ToString());
}
private void dataGridView1_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
{
if (e.ColumnIndex == -1)
MessageBox.Show(e.RowIndex.ToString());
}
答案 1 :(得分:0)
&#34; :=&#34;不是赋值运算符=是。
,您的代码应为
DataGridView.SelectionMode = DataGridViewSelectionMode.RowHeaderSelect;
if you want to get rowheader这篇文章会有所帮助。