首页 > 解决方案 > 选择多行时如何更改给定列中单元格的值?

问题描述

我希望能够在数据表中选择多行,然后如果它们被选中,则更改单元格中的值。我的代码是:

private void btnSetToReceived_Click(object sender, EventArgs e)
{
    SetToReceived();
}

private void SetToReceived()
{
        this.dgvPod.CurrentCell.Value = "Yes";
}

private void dgvPod_KeyDown(object sender, KeyEventArgs e)
{
    e.Handled = true;
    dgvPod.BeginEdit(true);
    SetToReceived();
}

标签: c#.netwinformsdatagridview

解决方案


我从你的问题中得到的是,你想选择多个单元格,然后开始输入,你希望所有选定的单元格值都会改变:

在此处输入图像描述

为此,您可以处理EditingControlShowing事件并获取TextBox编辑控件并处理其TextChanged事件并更新所选单元格的文本。例如:

private void Form1_Load(object sender, EventArgs e)
{
    dataGridView1.ColumnCount = 4;
    dataGridView1.RowCount = 4;
    TextBox txt = null;
    dataGridView1.EditingControlShowing += (s1, e1) =>
    {
        if (dataGridView1.EditingControl is TextBox)
        {
            if (txt == null)
            {
                txt = (TextBox)dataGridView1.EditingControl;
                txt.TextChanged += (s2, e2) =>
                {
                    foreach (DataGridViewCell cell in dataGridView1.SelectedCells)
                        cell.Value = txt.Text;
                };
            }

        }
    };
}

该代码不会检查选定的单元格是否都在同一列中,但是它在示例中显示了如何在键入的同时获取文本以及如何设置其他选定单元格的值。


推荐阅读