セル型のドロップダウンを無効にするには?

文書番号 : 21738     文書種別 : 使用方法     最終更新日 : 2006/06/22
文書を印刷する
対象製品
El Tabelle MultiRow 4.0J
詳細
El Tabelle MultiRow 4.0J では、セル型に応じて次のドロップダウンウィンドウがサポートされています。

・ドロップダウンカレンダー(日付型)
・ドロップダウン電卓(数値型)
・ドロップダウン エディタ(文字列型)
・ドロップダウンリスト(コンボボックス型、拡張コンボボックス型)

これらのドロップダウンウィンドウは、ドロップダウンボタンが表示されていない場合でも次のキーによって操作することができます。

・Alt + Down キーによる表示・非表示
・Alt + Up キーによる表示・非表示
・F4 キーによる表示・非表示

この動作は、Windows のコンボボックスおよび InputMan コントロールの仕様に基づくものです。
セル型のドロップダウンを無効にするには、次のように MultiRowSheet.CellNotify イベントを使用します。

[Visual Basic]
Private Sub MultiRowSheet1_CellNotify(ByVal sender As System.Object, ByVal e As GrapeCity.Win.ElTabelle.MCellNotifyEventArgs) Handles MultiRowSheet1.CellNotify
  If e.Name = GrapeCity.Win.ElTabelle.CellNotifyEvents.DropOpen Then
    Dim objEvent As GrapeCity.Win.ElTabelle.Editors.DropOpenEventArgs = _
      e.CellEvent
    objEvent.Cancel = True
  End If
End Sub


[C#]
private void multiRowSheet1_CellNotify(object sender, GrapeCity.Win.ElTabelle.MCellNotifyEventArgs e)
{
  if (e.Name == GrapeCity.Win.ElTabelle.CellNotifyEvents.DropOpen)
  {
    ((GrapeCity.Win.ElTabelle.Editors.DropOpenEventArgs)e.CellEvent).Cancel = true;
  }
}


※ DropOpenEventArgs クラスはファイルバージョン v4.0.2006.0428 以降のアセンブリで使用できます(詳細)。

また、ショートカットキーを無効にすることでも対応できます。

[Visual Basic]
Dim objKeyActions(0) As GrapeCity.Win.ElTabelle.MKeyAction
objKeyActions(0) = -1
MultiRowSheet1.Shortcuts.Add(Keys.F4, objKeyActions)
MultiRowSheet1.Shortcuts.Add(Keys.Alt + Keys.Down, objKeyActions)
MultiRowSheet1.Shortcuts.Add(Keys.Alt + Keys.Up, objKeyActions)

[C#]
GrapeCity.Win.ElTabelle.MKeyAction[] keyActions = new GrapeCity.Win.ElTabelle.MKeyAction[1];
keyActions[0] = (GrapeCity.Win.ElTabelle.MKeyAction)(-1);
multiRowSheet1.Shortcuts.Add(new GrapeCity.Win.ElTabelle.MShortcut(Keys.F4, keyActions));
multiRowSheet1.Shortcuts.Add(new GrapeCity.Win.ElTabelle.MShortcut(Keys.Alt | Keys.Down, keyActions));
multiRowSheet1.Shortcuts.Add(new GrapeCity.Win.ElTabelle.MShortcut(Keys.Alt | Keys.Up, keyActions));

イベントでキー入力を無効にする方法も有効です。

[Visual Basic]
Private Sub MultiRowSheet1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MultiRowSheet1.KeyDown
  If e.KeyCode = Keys.F4 Then
    e.Handled = True
  End If
End Sub


[C#]
private void multiRowSheet1_KeyDown(object sender, KeyEventArgs e)
{
  if (e.KeyCode == Keys.F4)
    e.Handled = true;
}


キーワード
HowTo

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