Esc キーが押されたとき、LeaveEdit イベントを処理しない方法
対象製品
El Tabelle for .NET 3.0J
詳細
El Tabelle の LeaveEdit イベントは編集の確定・キャンセルに関係なく、編集終了時に発生します。[Enter] キーまたは [Esc] キーによって LeaveEdit イベントの処理を分岐したい場合、次のように KeyDown イベントで入力されたキーを保存し、LeaveEdit イベントでこれを判別します。
WorkBook/Sheet の場合、次のようにコーディングします。
[Visual Basic]
[C#]
MultiRowSheet の場合、次のようにコーディングします。
[Visual Basic]
[C#]
※ イベントハンドラのコードは Visual Studio .NET で生成してください。
WorkBook/Sheet の場合、次のようにコーディングします。
[Visual Basic]
Private m_bolLeaveEditType As Boolean
Private Sub Sheet1_LeaveEdit(ByVal sender As Object, _
ByVal e As GrapeCity.Win.ElTabelle.LeaveEditEventArgs) _
Handles Sheet1.LeaveEdit
If m_bolLeaveEditType = True Then
Debug.WriteLine("Escキーで確定した場合の処理")
m_bolLeaveEditType = False
Exit Sub
End If
Debug.WriteLine("Enterキーで確定した場合の処理")
End Sub
Private Sub Sheet1_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles Sheet1.KeyDown
Select Case e.KeyCode
Case Keys.Enter
m_bolLeaveEditType = False
Case Keys.Escape
m_bolLeaveEditType = True
End Select
End Sub
Private Sub Sheet1_LeaveEdit(ByVal sender As Object, _
ByVal e As GrapeCity.Win.ElTabelle.LeaveEditEventArgs) _
Handles Sheet1.LeaveEdit
If m_bolLeaveEditType = True Then
Debug.WriteLine("Escキーで確定した場合の処理")
m_bolLeaveEditType = False
Exit Sub
End If
Debug.WriteLine("Enterキーで確定した場合の処理")
End Sub
Private Sub Sheet1_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles Sheet1.KeyDown
Select Case e.KeyCode
Case Keys.Enter
m_bolLeaveEditType = False
Case Keys.Escape
m_bolLeaveEditType = True
End Select
End Sub
[C#]
private bool m_bolLeaveEditType;
private void sheet1_LeaveEdit(object sender,
GrapeCity.Win.ElTabelle.LeaveEditEventArgs e)
{
if(m_bolLeaveEditType == true)
{
System.Diagnostics.Debug.WriteLine(
"Escキーで確定した場合の処理");
m_bolLeaveEditType = false;
return;
}
System.Diagnostics.Debug.WriteLine(
"Enterキーで確定した場合の処理");
}
private void sheet1_KeyDown(object sender,
System.Windows.Forms.KeyEventArgs e)
{
switch(e.KeyCode)
{
case Keys.Enter:
m_bolLeaveEditType = false;
break;
case Keys.Escape:
m_bolLeaveEditType = true;
break;
}
}
private void sheet1_LeaveEdit(object sender,
GrapeCity.Win.ElTabelle.LeaveEditEventArgs e)
{
if(m_bolLeaveEditType == true)
{
System.Diagnostics.Debug.WriteLine(
"Escキーで確定した場合の処理");
m_bolLeaveEditType = false;
return;
}
System.Diagnostics.Debug.WriteLine(
"Enterキーで確定した場合の処理");
}
private void sheet1_KeyDown(object sender,
System.Windows.Forms.KeyEventArgs e)
{
switch(e.KeyCode)
{
case Keys.Enter:
m_bolLeaveEditType = false;
break;
case Keys.Escape:
m_bolLeaveEditType = true;
break;
}
}
MultiRowSheet の場合、次のようにコーディングします。
[Visual Basic]
Private m_bolLeaveEditType As Boolean
Private Sub MultiRowSheet1_LeaveEdit(ByVal sender As Object, _
ByVal e As GrapeCity.Win.ElTabelle.MLeaveEditEventArgs) _
Handles MultiRowSheet1.LeaveEdit
If m_bolLeaveEditType = True Then
Debug.WriteLine("Escキーで確定した場合の処理")
m_bolLeaveEditType = False
Exit Sub
End If
Debug.WriteLine("Enterキーで確定した場合の処理")
End Sub
Private Sub MultiRowSheet1_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles MultiRowSheet1.KeyDown
Select Case e.KeyCode
Case Keys.Enter
m_bolLeaveEditType = False
Case Keys.Escape
m_bolLeaveEditType = True
End Select
End Sub
Private Sub MultiRowSheet1_LeaveEdit(ByVal sender As Object, _
ByVal e As GrapeCity.Win.ElTabelle.MLeaveEditEventArgs) _
Handles MultiRowSheet1.LeaveEdit
If m_bolLeaveEditType = True Then
Debug.WriteLine("Escキーで確定した場合の処理")
m_bolLeaveEditType = False
Exit Sub
End If
Debug.WriteLine("Enterキーで確定した場合の処理")
End Sub
Private Sub MultiRowSheet1_KeyDown(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles MultiRowSheet1.KeyDown
Select Case e.KeyCode
Case Keys.Enter
m_bolLeaveEditType = False
Case Keys.Escape
m_bolLeaveEditType = True
End Select
End Sub
[C#]
private bool m_bolLeaveEditType;
private void multiRowSheet1_LeaveEdit(object sender,
GrapeCity.Win.ElTabelle.MLeaveEditEventArgs e)
{
if(m_bolLeaveEditType == true)
{
System.Diagnostics.Debug.WriteLine(
"Escキーで確定した場合の処理");
m_bolLeaveEditType = false;
return;
}
System.Diagnostics.Debug.WriteLine(
"Enterキーで確定した場合の処理");
}
private void multiRowSheet1_KeyDown(object sender,
System.Windows.Forms.KeyEventArgs e)
{
switch(e.KeyCode)
{
case Keys.Enter:
m_bolLeaveEditType = false;
break;
case Keys.Escape:
m_bolLeaveEditType = true;
break;
}
}
private void multiRowSheet1_LeaveEdit(object sender,
GrapeCity.Win.ElTabelle.MLeaveEditEventArgs e)
{
if(m_bolLeaveEditType == true)
{
System.Diagnostics.Debug.WriteLine(
"Escキーで確定した場合の処理");
m_bolLeaveEditType = false;
return;
}
System.Diagnostics.Debug.WriteLine(
"Enterキーで確定した場合の処理");
}
private void multiRowSheet1_KeyDown(object sender,
System.Windows.Forms.KeyEventArgs e)
{
switch(e.KeyCode)
{
case Keys.Enter:
m_bolLeaveEditType = false;
break;
case Keys.Escape:
m_bolLeaveEditType = true;
break;
}
}
※ イベントハンドラのコードは Visual Studio .NET で生成してください。
キーワード
HowTo
この文書は、以前は次のFAQ IDで公開されていました : 6975