C# 画线问题~~~
Form上有一个tabControl1tabControl1的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上画没问题,在其他两个控件中画,只有拖着标题栏动动窗口才画出来
}
--------------------编程问答-------------------- 好像没你说的问题 --------------------编程问答-------------------- 同意楼上的方法,这好像是Windows机制造成的,Form的重绘并不会重绘他上面控件的部分,如果Form刷新重绘,他会通知他上面所有的控件进行重绘,而他自己只管重绘没有控件的部分 --------------------编程问答-------------------- 你在Form的Paint里面重绘其他窗体的东西,这算啥啊。。。
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();
}
}
就像你饿了,我送饭给你爸吃一样。。。 --------------------编程问答-------------------- 而且PaintEventArgs已经把Graphics给你了
我知道你是要吃饭,自然会给你带碗筷。。。 --------------------编程问答-------------------- 貌似有invalidtaChildren()这个方法,可以尝试一下 --------------------编程问答-------------------- 用Lable控件,设置它的Text为-------------,看看行不
补充:.NET技术 , C#