晕,忘了贴代码了,补上        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上画没问题,在其他两个控件中画,只有拖着标题栏动动窗口才画出来        }

解决方案 »

  1.   


    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(); 
        } 

      

  2.   

    同意楼上的方法,这好像是Windows机制造成的,Form的重绘并不会重绘他上面控件的部分,如果Form刷新重绘,他会通知他上面所有的控件进行重绘,而他自己只管重绘没有控件的部分
      

  3.   

    你在Form的Paint里面重绘其他窗体的东西,这算啥啊
    就像你饿了,我送饭给你爸吃一样
      

  4.   

    而且PaintEventArgs已经把Graphics给你了
    我知道你是要吃饭,自然会给你带碗筷
      

  5.   

    貌似有invalidtaChildren()这个方法,可以尝试一下
      

  6.   

    用Lable控件,设置它的Text为-------------,看看行不