矢印キーでGcComboBoxCellの値を変更するとき、最後または最初の項目が選択されてしまう場合がある
対象製品
MultiRow for Windows Forms 7.0J
状況
修正済み
詳細
同じ値に設定された複数のGcComboBoxCellを操作するとき、2番目に編集するセルで矢印キーを使って値を選択すると、その前後の項目ではなく最後または最初の項目が選択されます。
例えば、ドロップダウン項目に1~10の値を設定したGcComboBoxCellを2つ配置し、両方のセルに同じ値の"3"を設定している場合、実行時に1つ目のGcComboBoxCellの値を変更した後、2つ目のGcComboBoxCellを編集状態にし、「↑」キーを押すと、"2"ではなく"10"が選択されます。
例えば、ドロップダウン項目に1~10の値を設定したGcComboBoxCellを2つ配置し、両方のセルに同じ値の"3"を設定している場合、実行時に1つ目のGcComboBoxCellの値を変更した後、2つ目のGcComboBoxCellを編集状態にし、「↑」キーを押すと、"2"ではなく"10"が選択されます。
回避方法
この問題はService Pack 4(v7.0.2016.0428)で修正されました。
不具合を修正した最新のサービスパックは、アップデートページ からダウンロードできます。
Service Pack 4より前のバージョンでは次の方法で回避可能です。
EditingControlShowingイベントに次のコードを記述して、編集コントロールの内容を再設定します。
[Visual Basic]
Imports GrapeCity.Win.MultiRow
Imports GrapeCity.Win.MultiRow.InputMan
Private Sub GcMultiRow1_EditingControlShowing(sender As Object, e As EditingControlShowingEventArgs) Handles GcMultiRow1.EditingControlShowing
If TypeOf e.Control Is GcComboBoxEditingControl Then
Dim GcComobBox = CType(e.Control, GcComboBoxEditingControl)
If (GcComobBox IsNot Nothing) Then
Dim temp = GcComobBox.Text
GcComobBox.Text = Nothing
GcComobBox.Text = temp
End If
End If
End Sub
[C#]
using GrapeCity.Win.MultiRow;
using GrapeCity.Win.MultiRow.InputMan;
private void gcMultiRow1_EditingControlShowing(object sender, EditingControlShowingEventArgs e)
{
if (e.Control is GcComboBoxEditingControl )
{
GcComboBoxEditingControl gcComobBox = (GcComboBoxEditingControl)e.Control;
if ((gcComobBox != null))
{
string temp = gcComobBox.Text;
gcComobBox.Text = null;
gcComobBox.Text = temp;
}
}
}
不具合を修正した最新のサービスパックは、アップデートページ からダウンロードできます。
Service Pack 4より前のバージョンでは次の方法で回避可能です。
EditingControlShowingイベントに次のコードを記述して、編集コントロールの内容を再設定します。
[Visual Basic]
Imports GrapeCity.Win.MultiRow
Imports GrapeCity.Win.MultiRow.InputMan
Private Sub GcMultiRow1_EditingControlShowing(sender As Object, e As EditingControlShowingEventArgs) Handles GcMultiRow1.EditingControlShowing
If TypeOf e.Control Is GcComboBoxEditingControl Then
Dim GcComobBox = CType(e.Control, GcComboBoxEditingControl)
If (GcComobBox IsNot Nothing) Then
Dim temp = GcComobBox.Text
GcComobBox.Text = Nothing
GcComobBox.Text = temp
End If
End If
End Sub
[C#]
using GrapeCity.Win.MultiRow;
using GrapeCity.Win.MultiRow.InputMan;
private void gcMultiRow1_EditingControlShowing(object sender, EditingControlShowingEventArgs e)
{
if (e.Control is GcComboBoxEditingControl )
{
GcComboBoxEditingControl gcComobBox = (GcComboBoxEditingControl)e.Control;
if ((gcComobBox != null))
{
string temp = gcComobBox.Text;
gcComobBox.Text = null;
gcComobBox.Text = temp;
}
}
}
キーワード
MLTR10922