データをグループに分割するためのセパレータとして機能するカスタムDataGridViewRowを作成しようとしています。テキスト、BackgroundColorをとForeColorプロパティは、私のSeparatorDataGridViewRowクラスのプロパティであるカスタムDataGridViewRowの問題
protected override void PaintCells(Graphics graphics, Rectangle clipBounds, Rectangle rowBounds, int rowIndex, DataGridViewElementStates rowState, bool isFirstDisplayedRow, bool isLastVisibleRow, DataGridViewPaintParts paintParts)
{
graphics.FillRectangle(new SolidBrush(BackgroundColor),rowBounds);
StringFormat format = new StringFormat {Alignment = StringAlignment.Center,LineAlignment = StringAlignment.Center};
graphics.DrawString(Text, this.DataGridView.Font, new SolidBrush(ForeColor), rowBounds,format);
}
:私はこのようなDataGridViewRowクラスのPainCellsメソッドをオーバーライドすることでそれをやりました。行は、私が望んでいたのとまったく同じように見えます。しかし、これは "カバー"にすぎません。その理由は、描かれた矩形の下にオリジナルのデータグリッドセルがあるからです。特に私が追加したDataGridViewButtonColumnフォームを削除するセルがあります。そしてそのために、ボタンが私のセパレータ行であるセルをクリックすると、行が削除されます。
私はあなたが私に正しい方向を示すことができるか、私がこのソリューションを使ってできることをユーザーの可能性をブロックすることができるかを伝えることができたらうれしいでしょう。この行のあるものは、「描かれた矩形の下に」何があっても。
カスタムコントロールを作成する経験はほとんどありません。そのため、どのメソッドをオーバーライドするのか、特定の目標を達成するために何を追加するのかはわかりません。 すべての助けを歓迎します:)
DataGridViewに特定の行にセルを描画しないように指示する方法はありますか。または、与えられた行の型?私はそれに責任がある方法を見つけることができませんでした。 DataGridView onPaintメソッドは、パラメータとしてClipRectangleとGraphicsのみを提供するので、描画する行を決定することはできません。 – Brazol