セルのダブルクリック イベントのDataGridViewCellEventArgs
変数 (e
デザイナーが生成するメソッド スタブ内) には、クリックしたセルの位置を参照するプロパティがありますRowIndex
。ColumnIndex
それらを(おそらくクラス変数に、またはそれが必要DataGridView
な場合はローカル変数に)保存し、 のセルを更新するときにそれらを参照します。MyDataGridView.Item(e.ColumnIndex, e.RowIndex)
MyDataGridView.Rows(e.RowIndex).Cells(e.ColumnIndex)
e
セルのダブルクリックイベントの場合、次のようなものがあります。
Private Sub DataGridView1_CellDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellDoubleClick
Using myEditor As New frmCellEditor(Me.DataGridView1.Item(e.ColumnIndex, e.RowIndex).Value)
If myEditor.ShowDialog() = DialogResult.OK Then
Me.DataGridView1.Item(e.ColumnIndex, e.RowIndex).Value = myEditor.NewCellValue
End If
End Using
End Sub
これにより、エディターの新しいインスタンスが呼び出され、値が取得されます。このデモでは、次のようなフォームを作成しました。
パブリック クラス frmCellEditor
Public NewCellValue As Integer
Public Sub New(ByVal CurrentCellValue As Object)
InitializeComponent()
Me.TextBox1.Text = CStr(CurrentCellValue)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Me.NewCellValue = CInt(Me.TextBox1.Text)
Me.DialogResult = DialogResult.OK
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
Call Me.Close()
End Sub
End Class
ボタンが 2 つあるだけです ( Button1
= OK、Button2
= キャンセル)。[OK] をクリックする1
と、セルの値として設定される値が返されます。
これは非常に単純化された例ですが、何をしようとしているのかの基本を提供する必要があります。
アップデート:
エディター インターフェイスのコードを更新して、datagridview を使用してフォームとの間で値をやり取りするための処理が含まれるようにしました。
プロジェクトで、 という名前の新しいフォームを作成しますfrmCellEditor
。このフォームには、2 つのボタンとテキストボックスが必要です (プログラム名が一致していることを確認してください)。コードを上記のコードに置き換えます。Imports System.Windows.Forms
クラスの上にも追加する必要があります。
データグリッドのセル ダブル クリック イベントのイベント ハンドラーを修正して、 frmCellEditor
が構築されたときにセル値を渡すようにします (行は... New frmCellEditor(...)
.