既定のキー操作を無効にした場合に、Key イベントが検出されません

文書番号 : 19608     文書種別 : 使用方法     最終更新日 : 2005/11/22
文書を印刷する
対象製品
El Tabelle for .NET 3.0J
詳細
El Tabelle に割り当てられた既定のキー操作を無効にした場合、KeyDown イベントなどの Key 関連イベントを検出することができなくなります。この場合、ShortCutNotify イベントで検出します。

ShortCutNotify イベントのプロシージャは ShortCut オブジェクトに対して関連付けられるため、Visual Studio .NET のフォーム デザイナでは生成されません。イベントを受け取るプロシージャを手動で作成し、関連付ける必要があります。

次のコードは F4 キーによるドロップダウン操作を無効にし、Sheet1_ShortCutNotifyF4 イベントで F4 キーの入力を検出します。

・WorkBook/Sheet の場合、次のようにコーディングします。

[Visual Basic]
Private Sub Form1_Load(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles MyBase.Load
  
  Dim aryKeyActions(0) As GrapeCity.Win.ElTabelle.KeyAction
  '何も操作を割り当てない
  aryKeyActions(0) = -1
  Dim objShortcutF4 As New GrapeCity.Win.ElTabelle.ShortCut( _
    Keys.F4, aryKeyActions)
  'イベントにプロシージャを関連付ける
  AddHandler objShortcutF4.ShortCutNotify, _
    AddressOf Me.Sheet1_ShortCutNotifyF4
  'F4キーのショートカットを追加する
  Sheet1.ShortCuts.Add(objShortcutF4)
End Sub

Private Sub Sheet1_ShortCutNotifyF4(ByVal sender As Object, _
  ByVal e As GrapeCity.Win.ElTabelle.ShortCutNotifyEventArgs)
  Debug.WriteLine(e.Position.Expression & " で F4 キーが入力されました")
End Sub

[C#]
private void Form1_Load(object sender, System.EventArgs e)
{
  GrapeCity.Win.ElTabelle.KeyAction[] aryKeyActions =
    new GrapeCity.Win.ElTabelle.KeyAction[1];
  //何も操作を割り当てない
  aryKeyActions[0] = (GrapeCity.Win.ElTabelle.KeyAction)(-1);
  GrapeCity.Win.ElTabelle.ShortCut objShortcutF4 =
    new GrapeCity.Win.ElTabelle.ShortCut(Keys.F4, aryKeyActions);
  //イベントにプロシージャを関連付ける
  objShortcutF4.ShortCutNotify +=
    new GrapeCity.Win.ElTabelle.ShortCutNotifyHandler(
    this.sheet1_ShortCutNotifyF4);
  //ショートカットを追加する
  sheet1.ShortCuts.Add(objShortcutF4);
}

private void sheet1_ShortCutNotifyF4(object sender,
  GrapeCity.Win.ElTabelle.ShortCutNotifyEventArgs e)
{
  System.Diagnostics.Debug.WriteLine(e.Position.Expression +
    " で F4 キーが入力されました");
}

MultiRowSheet の場合、次のようにコーディングします。

[Visual Basic]
Private Sub Form1_Load(ByVal sender As System.Object, _
  ByVal e As System.EventArgs) Handles MyBase.Load
  
  Dim aryMKeyActions(0) As GrapeCity.Win.ElTabelle.MKeyAction
  '何も操作を割り当てない
  aryMKeyActions(0) = -1
  Dim objMShortcutF4 As New GrapeCity.Win.ElTabelle.MShortcut( _
    Keys.F4, aryMKeyActions)
  'イベントにプロシージャを関連付ける
  AddHandler objMShortcutF4.ShortcutNotify, _
    AddressOf Me.MultiRowSheet1_ShortcutNotifyF4
  'F4キーのショートカットを追加する
  MultiRowSheet1.Shortcuts.Add(objShortcutF4)

End Sub

Private Sub MultiRowSheet1_ShortcutNotifyF4(ByVal sender As Object, _
  ByVal e As GrapeCity.Win.ElTabelle.MShortcutNotifyEventArgs)
  Debug.WriteLine(e.MRow & " マルチ行目で F4 キーが入力されました")
End Sub

[C#]
private void Form1_Load(object sender, System.EventArgs e)
{
  GrapeCity.Win.ElTabelle.MKeyAction[] aryMKeyActions =
    new GrapeCity.Win.ElTabelle.MKeyAction[1];
  //何も操作を割り当てない
  aryMKeyActions[0] = (GrapeCity.Win.ElTabelle.MKeyAction)(-1);
  GrapeCity.Win.ElTabelle.MShortcut objMShortcutF4 =
    new GrapeCity.Win.ElTabelle.MShortcut(Keys.F4, aryMKeyActions);
  //イベントにプロシージャを関連付ける
  objMShortcutF4.ShortcutNotify +=
    new GrapeCity.Win.ElTabelle.MShortcutNotifyEventHandler(
    this.multiRowSheet1_ShortcutNotifyF4);
  //ショートカットを追加する
  multiRowSheet1.Shortcuts.Add(objMShortcutF4);
}

private void multiRowSheet1_ShortcutNotifyF4(object sender,
  GrapeCity.Win.ElTabelle.MShortcutNotifyEventArgs e)
{
  System.Diagnostics.Debug.WriteLine(e.MRow +
    " マルチ行目で F4 キーが入力されました");
}
キーワード
HowTo

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