7

空白行を取得したい。したがって、特定の行のグリッド線を非表示にしたいと考えています。これどうやってするの?

がある

Grid.CellBorderStyle = DataGridViewCellBorderStyle.None;

しかし、これはグリッドに適用できます。

4

2 に答える 2

1

テストされていませんが、 CellPaintingイベントを処理し、 DataGridViewParts.Borderを除外することで、必要なものを取得できるはずです。

  e.Paint(e.ClipBounds, DataGridViewPaintParts.All ^ DataGridViewPaintParts.Border);
  e.Handled = true;
于 2013-01-17T13:53:01.487 に答える
0

これは完璧ではありませんが、少しでも理解していただければ幸いです。

の設計DataGridView

this.dataGridView1.CellBorderStyle = DataGridViewCellBorderStyle.None;
this.dataGridView1.AllowUserToResizeRows = false;
this.dataGridView1.RowHeadersWidthSizeMode = DataGridViewRowHeadersWidthSizeMode.DisableResizing;


 private void dataGridView1_RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
{
    if (e.RowIndex == -1) return;
    // Calculate the bounds of the row.
    Rectangle rowBounds = new Rectangle(
        this.dataGridView1.RowHeadersWidth, e.RowBounds.Top,
        this.dataGridView1.Columns.GetColumnsWidth(
            DataGridViewElementStates.Visible) -
        this.dataGridView1.HorizontalScrollingOffset + 1,
        e.RowBounds.Height);

    // Paint the custom background. 
    using (Brush backbrush =
       new SolidBrush(this.dataGridView1.GridColor), backColorBrush = new SolidBrush(Color.White))
    {
        using (Pen gridLinePen = new Pen(backbrush))
        {
            //Apply to spicific row
            if (e.RowIndex == 2)
            {
                e.Graphics.FillRectangle(backbrush, rowBounds);

                // Draw the inset highlight box.
                e.Graphics.DrawRectangle(Pens.Blue, rowBounds);
            }
        }
    }
}

private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
    if (e.RowIndex == -1) return;
    if (e.Value != null)
    {
        // Draw the text content of the cell, ignoring alignment of e.RowIndex != 2
        if (e.RowIndex != 2)
        {
            e.Graphics.DrawString((String)e.Value, e.CellStyle.Font,
           Brushes.Black, e.CellBounds.X + 2,
           e.CellBounds.Y + 2, StringFormat.GenericDefault);
        }
    }
    e.Handled = true;
}

参照:
DataGridView.RowPrePaint イベント
DataGridView.CellPainting イベント

于 2013-01-17T16:01:16.020 に答える