当前位置:编程学习 > C#/ASP.NET >>

C# 画线问题~~~

Form上有一个tabControl1
tabControl1的tabPage1里有一个groupBox1

我想在groupBox1中画出线来,说白了就是当加载的时候就有这些画的线,于是我写了一个测试的小程序,
可是在Form上画线没问题,只要窗口一加载就有那线了,但是在其他两个控件上画线,窗口出来以后都要动动鼠标以后那两条线才出来,
请问为什么啊?如何修改呢? --------------------编程问答-------------------- 晕,忘了贴代码了,补上



        protected override void OnPaint(PaintEventArgs e)
        {
            base.OnPaint(e);

            //在Form上画线
            Graphics g = this.CreateGraphics();
            g.DrawLine(Pens.Black, 100, 100, 500, 500);
            g.Dispose();

            //在groupBox上画线
            Graphics g2 = this.groupBox1.CreateGraphics();
            g2.DrawLine(Pens.Black, 200, 10, 200, 100);
            g2.Dispose();

            //在tabPage1上画线
            Graphics g3 = this.tabControl1.TabPages[0].CreateGraphics();
            g3.DrawLine(Pens.Black, 20, 10, 20, 50);
            g3.Dispose();//这个必须写吗??


            //问题:在Form上画没问题,在其他两个控件中画,只有拖着标题栏动动窗口才画出来

        }



--------------------编程问答--------------------

public class Form1 

    private void GroupBox1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) 
    { 
        //在groupBox上画线 
        Graphics g2 = this.GroupBox1.CreateGraphics(); 
        g2.DrawLine(Pens.Black, 200, 10, 200, 100); 
        g2.Dispose(); 
    } 
    
    private void TabPage1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) 
    { 
        //在tabPage1上画线 
        Graphics g3 = this.TabControl1.TabPages(0).CreateGraphics(); 
        g3.DrawLine(Pens.Black, 20, 10, 20, 50); 
        g3.Dispose(); 
    } 
    
    private void Form1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) 
    { 
        //在Form上画线 
        Graphics g = this.CreateGraphics(); 
        g.DrawLine(Pens.Black, 100, 100, 500, 500); 
        g.Dispose(); 
    } 

--------------------编程问答-------------------- 好像没你说的问题 --------------------编程问答-------------------- 同意楼上的方法,这好像是Windows机制造成的,Form的重绘并不会重绘他上面控件的部分,如果Form刷新重绘,他会通知他上面所有的控件进行重绘,而他自己只管重绘没有控件的部分 --------------------编程问答-------------------- 你在Form的Paint里面重绘其他窗体的东西,这算啥啊。。。
就像你饿了,我送饭给你爸吃一样。。。 --------------------编程问答-------------------- 而且PaintEventArgs已经把Graphics给你了
我知道你是要吃饭,自然会给你带碗筷。。。 --------------------编程问答-------------------- 貌似有invalidtaChildren()这个方法,可以尝试一下 --------------------编程问答-------------------- 用Lable控件,设置它的Text为-------------,看看行不
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,