Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# winform-合并datagridview标头_C#_Winforms_Datagridview_Header_Merge - Fatal编程技术网

C# winform-合并datagridview标头

C# winform-合并datagridview标头,c#,winforms,datagridview,header,merge,C#,Winforms,Datagridview,Header,Merge,我在winForm中合并datagridview标题时遇到问题 我使用此代码: void dataGridView1_Paint(object sender, PaintEventArgs e) { Rectangle r1 = dataGridView1.GetCellDisplayRectangle(2, -1, true); Rectangle r2 = dataGridView1.GetCellDisplayRectangle(3, -1, tru

我在winForm中合并datagridview标题时遇到问题

我使用此代码:

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

我认为最简单的方法是在每次滚动datagridview时使合并头的单元格无效。您需要向Scroll事件添加处理程序:

dataGridView1.Scroll += new System.Windows.Forms.ScrollEventHandler(this.dataGridView1_Scroll);
下面是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);
}
希望这有帮助,谢谢