FormatConditions を使用して、プロパティに基づいて特定の行をフォーマットしています。たとえば、多くの行を持つ gridcontrol があり、エラーが発生すると一部の行が赤色になります。私が抱えている問題は、行が選択されると、書式設定が消えて青くなることです。
選択した行の色を、その行の色よりも少し暗い色合いにしたいと思います。つまり、行がシェーディングされたときの色がわかりますが、それが選択されていることもわかります。
これを行う最善の方法は何ですか?
FormatConditions を使用して、プロパティに基づいて特定の行をフォーマットしています。たとえば、多くの行を持つ gridcontrol があり、エラーが発生すると一部の行が赤色になります。私が抱えている問題は、行が選択されると、書式設定が消えて青くなることです。
選択した行の色を、その行の色よりも少し暗い色合いにしたいと思います。つまり、行がシェーディングされたときの色がわかりますが、それが選択されていることもわかります。
これを行う最善の方法は何ですか?
GridView.CustomDrawCell イベントを処理し、選択した行に属しているかどうかにかかわらず、現在のセルの状態を取得します。
//セルの状態を取得 - e.Cell は現在のセルへのアクセスを提供してペイントします-
GridRowCellState state = ((GridCellInfo)e.Cell).State;
次に、選択した行セルを確認します
if ((state & GridRowCellState.Selected) == GridRowCellState.Selected)
{
// do your custrom drawing here.
// for example
e.DisplayText = "";
e.Appearance.BorderColor = Color.White;
}
次に、要件に従ってセルをカスタムペイントした後 、CustomDrawEventArgs.Handled プロパティを設定します。e.Handled = true or false;
次のドキュメント リンクを参照してください。
カスタム ペインティングの基本
カスタム ペインティングのサンプル
GridView.CustomDrawCellイベントを処理し、現在の行の状態に基づいて行の色を設定することで、これを手動で行う必要があると思います。メモリが正しく機能する場合は、RowCellCustomDrawEventArgs.Cellプロパティで行の状態情報を確認する必要があります。
あなたの質問から、行が選択されているときの動作を変更するだけでよいので、行が選択されていない場合はカスタム描画( set e.Handled=False)をスキップでき、既存の機能は変更されません。