2009-06-01 45 views
2

次のコードを使用してDataGridViewのセル値を更新しています。これは、DataGridViewの 'CellDoubleClick'イベントハンドラー内で呼び出されます。DatagridviewのUpdateCellValue()

問題は、別のセルをクリックした後にのみセルが更新されることです。これを行うより良い方法はありますか?

string value = ""; 
if (_dataGrid1.CurrentRow.Cells[e.ColumnIndex].Value != null) 
    value = _dataGrid1.CurrentRow.Cells[e.ColumnIndex].Value.ToString(); 

FormEdit form = new FormEdit(value); // takes a string value 
if (form.ShowDialog() == DialogResult.OK) 
{ 
    _dataGrid1.CurrentRow.Cells[e.ColumnIndex].Value = form.SourceText; 
    _dataGrid1.UpdateCellValue(e.ColumnIndex, e.RowIndex); 
} 

いくつかの変数名は

答えて

0

私はこれが今日のプロジェクトに戻ったので、私の答えが簡単だったことがわかりました。サスペンド/ ResumeLayoutソリューションでした:

if (form.ShowDialog() == DialogResult.OK) 
{ 
    _dataGridView.SuspendLayout(); 

    _dataGridView.CurrentRow.Cells[e.ColumnIndex].Value = form.TextBoxText; 
    _dataGridView.UpdateCellValue(e.ColumnIndex, e.RowIndex); 

    _dataGridView.ResumeLayout(true); 
} 

これは、ダブルクリックのためにGridViewのセルで、テキストボックスとモーダル形式のコンテンツを編集します。

0

自分のアイデンティティを保護するために変更された_dataGrid1.CommitEditが問題を解決する呼び出していますか?

0

コントロールでRefreshを呼び出してみてください。データは更新される可能性がありますが、視覚的な表示は、クリックするまで別の場所に再描画されません。