数値型セルと日付型セルの上下キーを無効にするには?

文書番号 : 17395     文書種別 : 使用方法     最終更新日 : 2005/04/22
文書を印刷する
対象製品
El Tabelle for .NET 3.0J
詳細
数値型セルと日付型セルでは、セル編集時の上下キーに値の増減が割り当てられます。通常の上下キーの操作は [Ctrl] + 上下キーで行います。
これらのセル型で上下キーを無効にするには、Form の KeyPreview プロパティを true に設定し、次のコードを実行します。

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

[Visual Basic]
Private Sub Form1_KeyDown(ByVal sender As Object, _
 ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown

  'Sheet1がアクティブの場合
  If Me.ActiveControl Is Sheet1 Then
    'Sheet1が編集中の場合
    If Sheet1.EditState = True Then
      '編集中のセルが数値型または日付型の場合
      If Sheet1.ActiveCell.Editor.GetType Is _
       GetType(GrapeCity.Win.ElTabelle.Editors.NumberEditor) Or _
       Sheet1.ActiveCell.Editor.GetType Is _
       GetType(GrapeCity.Win.ElTabelle.Editors.DateEditor) _
       Then
        '上下キーが押された場合
        If e.KeyCode = Keys.Down _
         Or e.KeyCode = e.KeyCode.Up Then
          e.Handled = True
        End If
      End If
    End If
  End If
End Sub

[C#]
private void Form1_KeyDown(object sender,
  System.Windows.Forms.KeyEventArgs e)
{
  //Sheet1がアクティブの場合
  if (this.ActiveControl == sheet1)
  {
    //Sheet1が編集中の場合
    if (sheet1.EditState == true)
    {
      //編集中のセルが数値型または日付型の場合
      if (sheet1.ActiveCell.Editor.GetType() ==
        typeof(GrapeCity.Win.ElTabelle.Editors.NumberEditor) |
        sheet1.ActiveCell.Editor.GetType() ==
        typeof(GrapeCity.Win.ElTabelle.Editors.DateEditor))
      {
        //上下キーが押された場合
        if (e.KeyCode == Keys.Down | e.KeyCode == Keys.Up)
        {
          e.Handled = true;
        }
      }
    }
  }
}


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

[Visual Basic]
Private Sub Form1_KeyDown(ByVal sender As Object, _
 ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown

  'MultiRowSheet1がアクティブの場合
  If Me.ActiveControl Is Sheet1 Then
    'MultiRowSheet1が編集中の場合
    If MultiRowSheet1.EditState = True Then
      '編集中のセルが数値型または日付型の場合
      If MultiRowSheet1.ActiveCell.Editor.GetType Is _
       GetType(GrapeCity.Win.ElTabelle.Editors.NumberEditor) Or _
       MultiRowSheet1.ActiveCell.Editor.GetType Is _
       GetType(GrapeCity.Win.ElTabelle.Editors.DateEditor) _
       Then
        '上下キーが押された場合
        If e.KeyCode = Keys.Down _
         Or e.KeyCode = e.KeyCode.Up Then
          e.Handled = True
        End If
      End If
    End If
  End If
End Sub

[C#]
private void Form1_KeyDown(object sender,
  System.Windows.Forms.KeyEventArgs e)
{
  //Sheet1がアクティブの場合
  if (this.ActiveControl == multiRowSheet1)
  {
    //Sheet1が編集中の場合
    if (multiRowSheet1.EditState == true)
    {
      //編集中のセルが数値型または日付型の場合
      if (multiRowSheet1.ActiveCell.Editor.GetType() ==
        typeof(GrapeCity.Win.ElTabelle.Editors.NumberEditor) |
        multiRowSheet1.ActiveCell.Editor.GetType() ==
        typeof(GrapeCity.Win.ElTabelle.Editors.DateEditor))
      {
        //上下キーが押された場合
        if (e.KeyCode == Keys.Down | e.KeyCode == Keys.Up)
        {
          e.Handled = true;
        }
      }
    }
  }
}
キーワード
HowTo

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