【セル型全般】 編集中セルにてEnterキー押下によるKeyイベントを取得する方法
対象製品
SPREAD for Windows Forms 7.0J
詳細
SPREADでは予め、特定のキー押下に対するデフォルトの入力マップが定義されています。編集中セルでのEnterキー押下では、通常KeyUpイベントのみ発生しますが、デフォルトの入力マップを無効とすることにより、Keyイベントの取得が可能となります。以下のサンプルコードではKeyDownイベントを取得しています。
◎サンプルコード(VB)
◎サンプルコード(C#)
◎サンプルコード(VB)
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
FpSpread1.EditModePermanent = True
'' 編集中セルの Enterキー押下による動作を無効とします。
Dim im As New FarPoint.Win.Spread.InputMap
im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.None)
End Sub
Private Sub FpSpread1_EditModeOn(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOn
''編集モードONの時、KeyDownイベントを取得する
Dim KeyDownHandler As KeyEventHandler = AddressOf FpSpread1_KeyDown
AddHandler FpSpread1.EditingControl.KeyDown, KeyDownHandler
End Sub
Private Sub FpSpread1_EditModeOff(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOff
''編集モードOFFの時、KeyDownイベントの関連付けを解除
Dim KeyDownHandler As KeyEventHandler = AddressOf FpSpread1_KeyDown
RemoveHandler FpSpread1.EditingControl.KeyDown, KeyDownHandler
End Sub
Private Sub FpSpread1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles FpSpread1.KeyDown
If e.KeyCode = Keys.Enter Then
Debug.WriteLine("Enterキー押下によるKeyDown")
End If
End Sub
FpSpread1.EditModePermanent = True
'' 編集中セルの Enterキー押下による動作を無効とします。
Dim im As New FarPoint.Win.Spread.InputMap
im = FpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused)
im.Put(New FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.None)
End Sub
Private Sub FpSpread1_EditModeOn(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOn
''編集モードONの時、KeyDownイベントを取得する
Dim KeyDownHandler As KeyEventHandler = AddressOf FpSpread1_KeyDown
AddHandler FpSpread1.EditingControl.KeyDown, KeyDownHandler
End Sub
Private Sub FpSpread1_EditModeOff(ByVal sender As Object, ByVal e As System.EventArgs) Handles FpSpread1.EditModeOff
''編集モードOFFの時、KeyDownイベントの関連付けを解除
Dim KeyDownHandler As KeyEventHandler = AddressOf FpSpread1_KeyDown
RemoveHandler FpSpread1.EditingControl.KeyDown, KeyDownHandler
End Sub
Private Sub FpSpread1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles FpSpread1.KeyDown
If e.KeyCode = Keys.Enter Then
Debug.WriteLine("Enterキー押下によるKeyDown")
End If
End Sub
◎サンプルコード(C#)
private void Form1_Load(object sender, System.EventArgs e)
{
fpSpread1.EditModePermanent = true;
// 編集中セルの Enterキー押下による動作を無効とします。
FarPoint.Win.Spread.InputMap inputmap1;
inputmap1 = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
inputmap1.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.None);
}
private void fpSpread1_EditModeOn(object sender, System.EventArgs e)
{
// 編集モードONの時、KeyDownイベントを取得する
fpSpread1.EditingControl.KeyDown += new System.Windows.Forms.KeyEventHandler(this.fpSpread1_KeyDown);
}
private void fpSpread1_EditModeOff(object sender, System.EventArgs e)
{
// 編集モードOFFの時、KeyDownイベントの関連付けを解除
fpSpread1.EditingControl.KeyDown -= new System.Windows.Forms.KeyEventHandler(this.fpSpread1_KeyDown);
}
private void fpSpread1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
Console.WriteLine("EnterキーによるKeyDown");
}
}
{
fpSpread1.EditModePermanent = true;
// 編集中セルの Enterキー押下による動作を無効とします。
FarPoint.Win.Spread.InputMap inputmap1;
inputmap1 = fpSpread1.GetInputMap(FarPoint.Win.Spread.InputMapMode.WhenAncestorOfFocused);
inputmap1.Put(new FarPoint.Win.Spread.Keystroke(Keys.Enter, Keys.None), FarPoint.Win.Spread.SpreadActions.None);
}
private void fpSpread1_EditModeOn(object sender, System.EventArgs e)
{
// 編集モードONの時、KeyDownイベントを取得する
fpSpread1.EditingControl.KeyDown += new System.Windows.Forms.KeyEventHandler(this.fpSpread1_KeyDown);
}
private void fpSpread1_EditModeOff(object sender, System.EventArgs e)
{
// 編集モードOFFの時、KeyDownイベントの関連付けを解除
fpSpread1.EditingControl.KeyDown -= new System.Windows.Forms.KeyEventHandler(this.fpSpread1_KeyDown);
}
private void fpSpread1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
Console.WriteLine("EnterキーによるKeyDown");
}
}
関連情報
- 【セル型全般】 編集中のセルでKeyイベントが発生しません
- 【セル型全般】 カスタムサブエディタの表示位置を変更したい
- 【セル型全般】 編集中セルの文字色/背景色を変更する方法
- セルの編集用コントロールを取得するには
- 【Tips】編集中セルを強調表示させたい
キーワード
「編集用コントロール」