セルの編集時に GcNumberCell の値を null にするには?

文書番号 : 26675     文書種別 : 使用方法     最終更新日 : 2009/01/30
文書を印刷する
対象製品
MultiRow for Windows Forms 5.0J
詳細
セルの編集時に NumericUpDownCell の値を選択し、[Delete] キーや [BackSpace] キーで削除すると NumericUpDownCell の値は null (Visual Basic では Nothing) になります。一方、GcNumberCell では値が 0 となります。
GcNumberCell で NumericUpDownCell と同様の結果を提供するには、次のようにコーディングします。

[Visual Basic]
Imports GrapeCity.Win.MultiRow
Imports InputManCell = GrapeCity.Win.MultiRow.InputMan
Imports GrapeCity.Win.Editors

Private Sub GcMultiRow1_EditingControlShowing(ByVal sender As System.Object, ByVal e As EditingControlShowingEventArgs) Handles GcMultiRow1.EditingControlShowing
  Dim gcMultiRow As GcMultiRow = TryCast(sender, GcMultiRow)
  If TypeOf gcMultiRow.CurrentCell Is InputManCell.GcNumberCell Then
    RemoveHandler e.Control.KeyUp, AddressOf GcNumber_KeyUp
    AddHandler e.Control.KeyUp, AddressOf GcNumber_KeyUp
  End If
End Sub

Private Sub GcNumber_KeyUp(ByVal sender As System.Object, ByVal e As KeyEventArgs)
  Dim gcNumber As GcNumber = TryCast(sender, GcNumber)
  If (e.KeyData = Keys.Delete Or e.KeyData = Keys.Back) And gcNumber.Text = "0" Then
    e.Handled = True
    gcNumber.Clear()
  End If
End Sub


[C#]
using GrapeCity.Win.MultiRow;
using InputManCell = GrapeCity.Win.MultiRow.InputMan;
using GrapeCity.Win.Editors;

private void gcMultiRow1_EditingControlShowing(object sender, EditingControlShowingEventArgs e)
{
  GcMultiRow gcMultiRow = sender as GcMultiRow;

  if (gcMultiRow.CurrentCell is InputManCell.GcNumberCell)
  {
    e.Control.KeyUp -= new KeyEventHandler(gcNumber_KeyUp);
    e.Control.KeyUp += new KeyEventHandler(gcNumber_KeyUp);
  }
}

private void gcNumber_KeyUp(object sender, KeyEventArgs e)
{
  GcNumber gcNumber = sender as GcNumber;
  if ((e.KeyData == Keys.Delete || e.KeyData == Keys.Back) && gcNumber.Text == "0")
  {
    e.Handled = true;
    gcNumber.Clear();
  }
}

関連情報

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