传递参数后c#datagridview不刷新

时间:2016-08-17 03:27:32

标签: c# datagridview refresh

我将表单1:Products中的参数传递给Form2:ProductEdit。在ProductEdit中编辑参数后,Products中的datagridview不会刷新。

private void dataGridView_CellClick(object sender, DataGridViewCellEventArgs e)
    {
        if (e.ColumnIndex == 0 && e.RowIndex >= 0)
        {
            ProductEdit pe = new ProductEdit(dataGridView.SelectedRows[0].Cells[1].Value.ToString(), dataGridView.SelectedRows[0].Cells[2].Value.ToString(), dataGridView.SelectedRows[0].Cells[3].Value.ToString());
            pe.Show(dataGridView);
        }
    }    

public ProductEdit(string PId, string PName, string PPrice)
    {
        InitializeComponent();
        txtPId.Text = PId;
        txtPName.Text = PName;
        txtPPrice.Text = PPrice;
    }  

1 个答案:

答案 0 :(得分:0)

有两种解决方法。

  1. 传入单元格而不是传入字符串。将文本框绑定到单元格。然后,当您直接修改它时,所做的编辑将以原始形式显示。

  2. 关闭产品编辑后,将文本框中的值重新写回dataGridView.SelectedRows[0].Cells(xxxx)

  3. 方法1的一个例子:(未经测试)

    ProductEdit pe = new ProductEdit(dataGridView.SelectedRows[0].Cells[1], dataGridView.SelectedRows[0].Cells[2], dataGridView.SelectedRows[0].Cells[3]);
    
    public ProductEdit(DataGridViewCell PId, DataGridViewCell PName, DataGridViewCell PPrice)
    {
        InitializeComponent();
        txtPId.DataBindings.Add("Text", PId, "Value");
        txtPName.DataBindings.Add("Text", PName, "Value");
        txtPPrice.DataBindings.Add("Text", PPrice, "Value");
    }