0


0

datagridviewでの四角形の描画とスクロールの同期

現在、datagridviewのセル選択機能に取り組んでいます。セルの周囲に四角形を描画して、四角形の座標とサイズを使用して、選択をシミュレートします。 下または右にスクロールしてさらにセルを選択すると、問題が発生します。 選択中、どのセルが長方形で囲まれているかに関係なく、長方形は同じ寸法とパラメーターで描画されます。

長方形で同じセルを選択/境界付けするために、長方形の描画をスクロールと同期させる方法を知りたいです。

これに向けての助けや方向を歓迎します。

ありがとう

1 Answer


1


現在使用しているテクニックはわかりませんが、「Paint」イベントを処理して「DataGridView」コントロールに直接ペイントすることはお勧めできません。

ペイントコードを特定のセルや行の境界に分割し、 `CellPainting`または 'RowPostPaint`イベントでペイントする必要があります。 複数のセルの周囲に長方形を描くには、影響を受けるセルの境界線内にペイントするか、隣接するセルにペイントします。

DataGridViewCellPaintingEventArgs`の CellBounds`プロパティは、常にセル自体に相対的な座標を提供します。つまり、 `DataGridView`内のスクロールに自動的に適応します。

編集: `CellPainting`イベントを処理して特定のセルの周りにカスタム境界線を描画する方法の例:

void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e) {
    e.Paint(e.ClipBounds, e.PaintParts);
    if ((e.RowIndex == myRowIndex) && (e.ColumnIndex == myColumnIndex)) {
        Pen pen = new Pen(Color.Red, 2f);
        e.Graphics.DrawRectangle(pen, e.CellBounds);
    }
    e.Handled = true;
}