コンボボックスで最初の項目が空白のとき現在の項目が選択されない場合がある
対象製品
MultiRow for Windows Forms 5.0J
発生環境
v5.0.2008.0430
v5.0.2008.0930
v5.0.2008.0930
状況
修正済み
詳細
この現象は、コンボボックスセルをデータソースにバインドしたときに発生します。
コンボボックスセルの最初の項目が空白の場合、該当コンボボックスが編集状態に入るとき、現在の値が選択されません。
コンボボックスセルの最初の項目が空白の場合、該当コンボボックスが編集状態に入るとき、現在の値が選択されません。
回避方法
この現象は、MultiRow for Windows Forms 5.0J 修正版(v5.0.2009.0116)で修正されています。
最新のService Packのダウンロードはこちら 。
または、次のようにコーディングで値を再設定することで回避できます。
[Visual Basic]
Private Sub GcMultiRow1_EditingControlShowing(ByVal sender As Object, ByVal e As GrapeCity.Win.MultiRow.EditingControlShowingEventArgs) Handles GcMultiRow1.EditingControlShowing
' [1/2] コンボ型セルでのEnterイベント実装
If TypeOf e.Control Is ComboBoxEditingControl Then
RemoveHandler e.Control.Enter, AddressOf EditingControl_Enter
AddHandler e.Control.Enter, AddressOf EditingControl_Enter
End If
End Sub
Private Sub EditingControl_Enter(ByVal sender As Object, ByVal e As EventArgs)
' [2/2] ドロップダウンリストの初期設定
Dim combo As ComboBoxEditingControl = sender
Dim pos As CellPosition = GcMultiRow1.CurrentCellPosition
combo.SelectedValue = GcMultiRow1.GetValue(pos.RowIndex, pos.CellIndex)
End Sub
[C#]
private void gcMultiRow1_EditingControlShowing(object sender, GrapeCity.Win.MultiRow.EditingControlShowingEventArgs e)
{
if (e.Control is ComboBoxEditingControl)
{
// [1/2] コンボ型セルでのEnterイベント実装
e.Control.Enter -= new EventHandler(EditingControl_Enter);
e.Control.Enter += new EventHandler(EditingControl_Enter);
}
}
private void EditingControl_Enter(object sender, EventArgs e)
{
// [2/2] ドロップダウンリストの初期設定
ComboBoxEditingControl combo = sender as ComboBoxEditingControl;
CellPosition pos = gcMultiRow1.CurrentCellPosition;
combo.SelectedValue = gcMultiRow1.GetValue(pos.RowIndex, pos.CellIndex);
}
最新のService Packのダウンロードはこちら 。
または、次のようにコーディングで値を再設定することで回避できます。
[Visual Basic]
Private Sub GcMultiRow1_EditingControlShowing(ByVal sender As Object, ByVal e As GrapeCity.Win.MultiRow.EditingControlShowingEventArgs) Handles GcMultiRow1.EditingControlShowing
' [1/2] コンボ型セルでのEnterイベント実装
If TypeOf e.Control Is ComboBoxEditingControl Then
RemoveHandler e.Control.Enter, AddressOf EditingControl_Enter
AddHandler e.Control.Enter, AddressOf EditingControl_Enter
End If
End Sub
Private Sub EditingControl_Enter(ByVal sender As Object, ByVal e As EventArgs)
' [2/2] ドロップダウンリストの初期設定
Dim combo As ComboBoxEditingControl = sender
Dim pos As CellPosition = GcMultiRow1.CurrentCellPosition
combo.SelectedValue = GcMultiRow1.GetValue(pos.RowIndex, pos.CellIndex)
End Sub
[C#]
private void gcMultiRow1_EditingControlShowing(object sender, GrapeCity.Win.MultiRow.EditingControlShowingEventArgs e)
{
if (e.Control is ComboBoxEditingControl)
{
// [1/2] コンボ型セルでのEnterイベント実装
e.Control.Enter -= new EventHandler(EditingControl_Enter);
e.Control.Enter += new EventHandler(EditingControl_Enter);
}
}
private void EditingControl_Enter(object sender, EventArgs e)
{
// [2/2] ドロップダウンリストの初期設定
ComboBoxEditingControl combo = sender as ComboBoxEditingControl;
CellPosition pos = gcMultiRow1.CurrentCellPosition;
combo.SelectedValue = gcMultiRow1.GetValue(pos.RowIndex, pos.CellIndex);
}
キーワード
MLTR07102
この文書は、以前は次のバグレポートIDで公開されていました : 7771