如何在DataGridView的编辑模式下放置按钮的值?

时间:2014-05-27 19:23:31

标签: c# winforms datagridview editmode

我遇到了问题。我有一个datagridview和一个可编辑的列,用户可以自己编写一个数字。但是......我需要在按钮的帮助下写下这个数字。例如,我有按钮1,2,3,... 9,如果用户单击此可编辑列(当然在一个单元格上),然后单击按钮3,则单元格中将出现3。我不知道该怎么做。我知道DataGridView中有这个EditMode,但我不知道如何使用它。

编辑: 我确实是这样的。它的工作原理:)。但是......当我改变sum的值时,有没有办法看到所选单元格的变化?例如,我选择一个单元格并且sum = 0,过了一会儿(当仍然选择相同的单元格时)总和变为13,但是当我选择不同的单元格时,我不会在所选单元格中看到这些变化它会有13.当它改变时,有没有办法看到所选单元格中的值?

dataGridView1.CellClick += CellClicked;
private void CellClicked(object sender,DataGridViewCellEventArgs e)
        {
            int row = e.RowIndex;
            int col = e.ColumnIndex;
            dataGridView1.Rows[row].Cells[col].Value = sum;

         }

1 个答案:

答案 0 :(得分:1)

在课堂上制作一个新变量' root,保存最后一次单击的单元格的位置:

DataGridViewCell activatedCell;

然后在您的" CellClicked" -event:

中设置活动单元格
private void CellClicked(object sender,DataGridViewCellEventArgs e)
{
   activatedCell = ((DataGridView)sender).Rows[e.RowIndex].Cells[e.ColumnIndex];
}

然后对按钮进行点击事件,在此处为此激活的单元格设置值:

void Button_Click(Object sender, EventArgs e)
{
    // If the cell wasn't set, return
    if (activatedCell == null) { return; }

    // Set the number to your buttons' "Tag"-property, and read it to Cell
    if (activatedCell.Value != null) { activatedCell.Value = Convert.ToDouble(((Button)sender).Tag) + Convert.ToDouble(activatedCell.Value);
    else { activatedCell.Value = Convert.ToDouble(((Button)sender).Tag); }

    dataGridView1.Refresh();
    dataGridView1.Invalidate();
    dataGridView1.ClearSelection();
}