Windows フォームにデータバインドされた XtraGrid があります。列の 1 つはチェック ボックスです。問題は次のとおりです。ユーザーがチェックボックスをオンにして [OK] ボタンをクリックすると、チェックボックスは目に見えてオンになっているにもかかわらず、グリッドではオンと見なされません。これを行うと(行をループしながら):
isAllowed = Convert.ToBoolean(viewMain.GetRowCellValue(nRowCtr, "IsAllowed"))
私はFalseを返します。しかし、ユーザーがボックスをチェックしてからフォームの別の場所またはこのグリッドの別の行をクリックすると、チェックされたチェックボックスからフォーカスが奪われ、上記の同じコードは True を返します。
この動作を修正する方法についての洞察をいただければ幸いです。
見つかった回避策: デフォルト設定では、ユーザーがセルをクリックして編集すると、セルが編集モードになり、エディター コントロール (この場合は CheckEdit リポジトリ コントロールがあります) が読み込まれ、コントロールの値が変更されます (この場合はチェックされた状態)。 . 別の行または別のコントロールをクリックすると、セルは編集モードから抜け出し、データ項目への変更をコミットします。しかし、ボタンをクリックすると、変更が失われます。回避策は、CheckEdit の CheckedChanged イベントを使用してエディターを閉じることです。
Private Sub edCheck_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles edCheck.CheckedChanged
gridYears.FocusedView.CloseEditor()
End Sub