有人可以帮忙吗?
我有一个包含三列和一个按钮列的DataGridView。
如果我点击按钮列,那么该行中的所有值都应转移到另一种形式。
注意:我已经实现了以下点击事件处理程序:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
}
除了使用单元格点击事件之外,还有其他选择吗?
非常感谢.....
答案 0 :(得分:1)
尝试CellContentClick事件。
单击单元格内容时会发生此事件。当按钮单元格或复选框单元格具有焦点时,用户按下并释放空格键时也会发生这种情况,如果在按空格键时单击单元格内容,则会对这些单元格类型发生两次。
http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellcontentclick.aspx
编辑:CellContentClick事件提供DataGridViewCellEventArgs参数,其中包含单击的确切列和行。从我提供的那个链接,我可以把一个简短的例子放在一起。我假设您要传递的值是字符串,并且位于第2,3和4列(分别为索引1,2和3)。 注意,这未经过测试!
if (DataGridView1.Columns[e.ColumnIndex] is DataGridViewButtonColumn && cellEvent.RowIndex != -1)
{
DataRow currRow = DataGridView1.Rows[e.RowIndex];
SendValuesSomewhereElse(Convert.ToString(currRow[1]), Convert.ToString(currRow[2]), Convert.ToString(currRow[3]));
}
答案 1 :(得分:1)
假设前三列包含数据,然后第四列包含按钮。
提取数据的快捷方式是:
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
//If not fourth column then return (the button)
if (e.ColumnIndex != 3)
return;
object col1 = dataGridView1.Rows[e.RowIndex].Cells[0].Value;
object col2 = dataGridView1.Rows[e.RowIndex].Cells[1].Value;
object col3 = dataGridView1.Rows[e.RowIndex].Cells[2].Value;
}
您点击的行包含e.RowIndex
,并点击了e.ColumnIndex
列。 0是第一行/列。