■■■

2016年4月2日土曜日

DataGridViewのセルにおける編集イベントを取得する方法

DataGridViewのセルにおける編集イベントを取得する方法
VB.NET
Private Sub dgv1_EditingControlShowing(ByVal sender As Object, _
ByVal e As DataGridViewEditingControlShowingEventArgs) _
Handles dgv1.EditingControlShowing
If TypeOf e.Control Is DataGridViewTextBoxEditingControl Then
Dim
dgv As DataGridView = CType(sender, DataGridView)

Dim tb As DataGridViewTextBoxEditingControl = _
CType(e.Control, DataGridViewTextBoxEditingControl)

RemoveHandler tb.KeyPress, AddressOf dataGridViewTextBox_KeyPress

If dgv.CurrentCell.OwningColumn.Name = "Column1" Then
AddHandler tb.KeyPress, AddressOf dataGridViewTextBox_KeyPress
End If
End If
End Sub


Private Sub dataGridViewTextBox_KeyPress(ByVal sender As Object, _
ByVal e As KeyPressEventArgs)
If e.KeyChar < "0"c Or e.KeyChar > "9"c Then
e.Handled = True
End If
End Sub
C#
private void dgv1_EditingControlShowing(object sender,
DataGridViewEditingControlShowingEventArgs e)
{
if (e.Control is DataGridViewTextBoxEditingControl)
{
DataGridView dgv = (DataGridView)sender;

DataGridViewTextBoxEditingControl tb =
(DataGridViewTextBoxEditingControl)e.Control;

tb.KeyPress -=
new KeyPressEventHandler(dataGridViewTextBox_KeyPress);

if (dgv.CurrentCell.OwningColumn.Name == "Column1")
{
tb.KeyPress +=
new KeyPressEventHandler(dataGridViewTextBox_KeyPress);
}
}
}

private void dataGridViewTextBox_KeyPress(object sender,
KeyPressEventArgs e)
{
if (e.KeyChar < '0' || e.KeyChar > '9')
{
e.Handled = true;
}
}

■■■