Graphics的FillRectangle的问题
代码如下,class a用来在运行时画一个Label,然后定义两个方法一个改text,一个做fill
private void button1_Click(object sender, System.EventArgs e)
{
b=new a(panel1);
//b.settext();
}
private void button2_Click(object sender, System.EventArgs e)
{
b.settext();
//MessageBox.Show("ss");
b.drawaLabel();
}
}
public class a
{
private Label aLabel=new Label();
private Graphics g;
public Rectangle rect=new Rectangle();
public a(Control far)
{
aLabel.Name="a";
aLabel.Top=10;
aLabel.Left=20;
aLabel.Height=30;
aLabel.Width=40;
aLabel.BorderStyle=BorderStyle.FixedSingle;
aLabel.Parent=far;
aLabel.Text="exp";
g=aLabel.CreateGraphics();
rect=aLabel.ClientRectangle;
}
public void settext()
{
aLabel.Text="draw";
}
public void drawaLabel()
{
g.FillRectangle(new SolidBrush(Color.Red),rect);
}
}
其中的b.settext()如果在button_click调用,button2_click只有drawaLabel时一切正常,但如果在button2_click里连着写上settext和drawaLabel时,drawaLabel就没用。但如果在两者之间加上MessageBox.Show,就也正常。估计跟aLabel的paint事件有关,但没搞清楚是什么关系?为什么加一条message就没事了?哪位大大清楚其中关系的答疑解惑啊。郁闷ing。