C# 相对较新;希望我只是忽略了一些简单的事情。
我有一个名为“Exercise1”的表单,其中包含一个名为“drawingArea”的图片框和几个按钮。练习1的构造函数代码如下:
public Exercise1()
{
InitializeComponent();
paper = drawingArea.CreateGraphics();
balloon = new Balloon("redBalloon", Color.Red, drawingArea.Width / 2,
drawingArea.Height / 2, 30);
paper.Clear(Color.White);
balloon.Display(paper);
}
...
'paper' 和 'balloon' 在构造函数上方创建为全局变量,用于表单上的其他方法。'paper' 和 'balloon' 都按照在构造函数中在表单上定义的其他方法中初始化的方式工作。
无论出于何种原因,命令
paper.Clear(Color.White);
和
balloon.Display(paper);
应该清除图片框并显示一个红色椭圆,不要执行(至少是可见的)。是什么赋予了?
更新:
我想我会喜欢这个网站的……你们很快!
@Nitesh:Exercise1 的构造函数是从另一种形式调用的。代码如下:
private void button1_Click(object sender, EventArgs e)
{
int exSelector = (int)numericUpDown1.Value;
switch (exSelector)
{
case 1:
Exercise1 form1 = new Exercise1();
form1.Show();
break;
...
@Sean Dunford:是的,是的。
@RBarryYoung:玩了一下,但没有运气。什么命令触发了练习 1 的 Form_Load 事件?
更新:此更改后的代码按预期工作:
public Exercise1()
{
InitializeComponent();
paper = drawingArea.CreateGraphics();
drawingArea.BackColor = Color.White;
drawingArea.Paint += new PaintEventHandler(this.drawingArea_Paint);
balloon = new Balloon("redBalloon", Color.Red, drawingArea.Width / 2, drawingArea.Height / 2, 30);
}
private void drawingArea_Paint(object sender, PaintEventArgs e)
{
e.Graphics.Clear(Color.White);
balloon.Display(e.Graphics);
}
...
感谢所有的帮助!