セルの編集時に GcNumberCell の値を null にするには?
対象製品
MultiRow for Windows Forms 5.0J
詳細
セルの編集時に NumericUpDownCell の値を選択し、[Delete] キーや [BackSpace] キーで削除すると NumericUpDownCell の値は null (Visual Basic では Nothing) になります。一方、GcNumberCell では値が 0 となります。
GcNumberCell で NumericUpDownCell と同様の結果を提供するには、次のようにコーディングします。
[Visual Basic]
[C#]
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
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();
}
}
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