【问题标题】:Problem with datagrid view button column数据网格视图按钮列的问题
【发布时间】:2011-08-31 19:44:42
【问题描述】:

有人可以帮忙吗?

我有一个包含三列和一个按钮列的 DataGridView。

如果我单击按钮列,则该行中的所有值都应传输到另一个表单。

注意:我已经实现了以下点击事件处理程序:

private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
{
}

除了使用单元格点击事件还有其他选择吗?

非常感谢.....

【问题讨论】:

  • 问题不清楚,没有问号,也没有明确的问题。

标签: c# .net winforms datagridview


【解决方案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]));
}

【讨论】:

  • 如何在数据网格视图中找到按钮单元格并希望获得相应的行值...请详细说明您的答案
【解决方案2】:

假设您的前三列包含数据,然后第四列包含按钮。

提取数据的一种快速而肮脏的方法是:

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 是第一行/列。

【讨论】:

    猜你喜欢
    • 2011-12-14
    • 2018-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多