作成日: 2013/08/15 最終更新日: 2013/08/22
文書種別
制限事項
詳細
SelectionChangedイベントでStartEditingメソッドを実行して常時編集モードにしていると、Enterキーを押してもKeyUpイベントが発生しません。
4.0.20123.288以降のバージョンでのみ、この現象が発生します。
この現象は制限事項です。
「StartEditingメソッドで常時編集モードにしている際にカーソルの動きが不正になる」という不具合を修正するために、Enterキーの押下時にKeyUpイベントをC1FlexGridへ渡さずにセルエディタで処理する必要があったため、修正の結果、本現象が発生するようになりました。
4.0.20123.288以降のバージョンでのみ、この現象が発生します。
この現象は制限事項です。
「StartEditingメソッドで常時編集モードにしている際にカーソルの動きが不正になる」という不具合を修正するために、Enterキーの押下時にKeyUpイベントをC1FlexGridへ渡さずにセルエディタで処理する必要があったため、修正の結果、本現象が発生するようになりました。
回避方法
次のようにC1FlexGrid.PrepareCellForEditイベントでセルエディタに対してKeyUpイベントハンドラを定義することで、Enterキーを押した際にもKeyUpイベントを処理することが可能です。
◎サンプルコード (Visual Basic)
◎サンプルコード (C#)
◎サンプルコード (Visual Basic)
Private Sub C1FlexGrid1_CellEditEnding(sender As Object, e As CellEditEventArgs) Handles C1FlexGrid1.CellEditEnding
If e.Editor IsNot Nothing Then
Dim editor = e.Editor
RemoveHandler editor.KeyUp, AddressOf Editor_KeyUp
End If
End Sub
Private Sub C1FlexGrid1_PrepareCellForEdit(sender As Object, e As CellEditEventArgs) Handles C1FlexGrid1.PrepareCellForEdit
If e.Editor IsNot Nothing Then
Dim editor = e.Editor
AddHandler editor.KeyUp, AddressOf Editor_KeyUp
End If
End Sub
Private Sub C1FlexGrid1_SelectionChanged(sender As Object, e As CellRangeEventArgs) Handles C1FlexGrid1.SelectionChanged
C1FlexGrid1.StartEditing(False)
End Sub
Private Sub Editor_KeyUp(sender As Object, e As KeyEventArgs)
If e.Key = Key.Enter Then
MessageBox.Show("KeyUp")
End If
End Sub
If e.Editor IsNot Nothing Then
Dim editor = e.Editor
RemoveHandler editor.KeyUp, AddressOf Editor_KeyUp
End If
End Sub
Private Sub C1FlexGrid1_PrepareCellForEdit(sender As Object, e As CellEditEventArgs) Handles C1FlexGrid1.PrepareCellForEdit
If e.Editor IsNot Nothing Then
Dim editor = e.Editor
AddHandler editor.KeyUp, AddressOf Editor_KeyUp
End If
End Sub
Private Sub C1FlexGrid1_SelectionChanged(sender As Object, e As CellRangeEventArgs) Handles C1FlexGrid1.SelectionChanged
C1FlexGrid1.StartEditing(False)
End Sub
Private Sub Editor_KeyUp(sender As Object, e As KeyEventArgs)
If e.Key = Key.Enter Then
MessageBox.Show("KeyUp")
End If
End Sub
◎サンプルコード (C#)
private void C1FlexGrid1_CellEditEnding(object sender, CellEditEventArgs e)
{
if (e.Editor != null) {
dynamic editor = e.Editor;
editor.KeyUp -= Editor_KeyUp;
}
}
private void C1FlexGrid1_PrepareCellForEdit(object sender, CellEditEventArgs e)
{
if (e.Editor != null) {
dynamic editor = e.Editor;
editor.KeyUp += Editor_KeyUp;
}
}
private void C1FlexGrid1_SelectionChanged(object sender, CellRangeEventArgs e)
{
C1FlexGrid1.StartEditing(false);
}
private void Editor_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter) {
MessageBox.Show("KeyUp");
}
}
{
if (e.Editor != null) {
dynamic editor = e.Editor;
editor.KeyUp -= Editor_KeyUp;
}
}
private void C1FlexGrid1_PrepareCellForEdit(object sender, CellEditEventArgs e)
{
if (e.Editor != null) {
dynamic editor = e.Editor;
editor.KeyUp += Editor_KeyUp;
}
}
private void C1FlexGrid1_SelectionChanged(object sender, CellRangeEventArgs e)
{
C1FlexGrid1.StartEditing(false);
}
private void Editor_KeyUp(object sender, KeyEventArgs e)
{
if (e.Key == Key.Enter) {
MessageBox.Show("KeyUp");
}
}
旧文書番号
80407