2016-08-17 8 views
0

Form1:ProductsのパラメータをForm2:ProductEditに渡しています。 ProductEditのパラメータを編集した後、Productsのdatagridviewは更新されません。c#パラメータを渡した後に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; 
    } 

答えて

0

これを解決する方法は2つあります。

  1. 文字列を渡す代わりに、セルを渡します。テキストボックスをセルにバインドします。その後、編集内容を直接修正して元の形式で表示されます。

  2. 製品編集バックdataGridView.SelectedRows[0].Cells(xxxx)


へのアプローチ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"); 
} 
+0

uは –

+0

以上を説明することができあなたの製品編集フォームは、各セルの文字列内容のコピーをフォームに渡すだけで、あなたのデータグリッドビューから完全に切り離されます。したがって、編集を終えたら、編集した値をデータグリッドに書き戻す必要があります。これを行うには、データをどこに送る必要があるかを参照する必要があります。したがって、DataGridViewCellをコンストラクタに追加することをお勧めします。 – FloatingKiwi

関連する問題