winform - объединение заголовков datagridview - PullRequest
0 голосов
/ 20 декабря 2009

У меня проблема с объединением заголовков datagridview в winForm.

Я использую этот код:

void dataGridView1_Paint(object sender, PaintEventArgs e)
    {
        Rectangle r1 = dataGridView1.GetCellDisplayRectangle(2, -1, true);
        Rectangle r2 = dataGridView1.GetCellDisplayRectangle(3, -1, true);

        r1.X += 1;
        r1.Y += 2;
        r1.Width += r2.Width - 2;
        r1.Height -= 6;

        using (SolidBrush br = new SolidBrush(dataGridView1.ColumnHeadersDefaultCellStyle.BackColor))
        {
            e.Graphics.FillRectangle(br, r1);
        }

        //draw text
        using (SolidBrush br = new SolidBrush(this.dataGridView1.ColumnHeadersDefaultCellStyle.ForeColor))
        {
            StringFormat sf = new StringFormat
                                  {
                                      LineAlignment = StringAlignment.Center,
                                      Alignment = StringAlignment.Center
                                  };
            e.Graphics.DrawString("merged header", dataGridView1.ColumnHeadersDefaultCellStyle.Font, br, r1, sf);
        }
    }

перед прокруткой сетки. все хорошо, но после прокрутки текст заголовка изменился на текст мусора. пожалуйста, проверьте снимок .

Буду признателен, если кто-нибудь поможет мне найти хорошее решение.

ali.mz

1 Ответ

1 голос
/ 21 декабря 2009

Я считаю, что самым простым способом было бы аннулировать ячейки объединенного заголовка при каждой прокрутке таблицы данных. Вам нужно добавить обработчик к событию Scroll:

dataGridView1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.dataGridView1_Scroll);

Ниже приведена реализация обработчика события прокрутки:

private void dataGridView1_Scroll(object sender, ScrollEventArgs e)
{
    Rectangle rect = Rectangle.Union(
        dataGridView1.GetCellDisplayRectangle(2, -1, true), 
        dataGridView1.GetCellDisplayRectangle(3, -1, true));
    dataGridView1.Invalidate(rect);
}

надеюсь, это поможет, с уважением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...