Esc キーが押されたとき、LeaveEdit イベントを処理しない方法

文書番号 : 17415     文書種別 : 使用方法     最終更新日 : 2005/04/29
文書を印刷する
対象製品
El Tabelle for .NET 3.0J
詳細
El Tabelle の LeaveEdit イベントは編集の確定・キャンセルに関係なく、編集終了時に発生します。[Enter] キーまたは [Esc] キーによって LeaveEdit イベントの処理を分岐したい場合、次のように KeyDown イベントで入力されたキーを保存し、LeaveEdit イベントでこれを判別します。

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


[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;
  }
}

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


[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;
  }
}


※ イベントハンドラのコードは Visual Studio .NET で生成してください。
キーワード
HowTo

この文書は、以前は次のFAQ IDで公開されていました : 6975