我有一个Windows窗体和两个文本框的图像 . 我希望当我在这些文本框中输入值并按Enter键时,它会影响图像:图像的高度和宽度应更改为文本框值 .
private void buttonZ1_Click(object sender, EventArgs e)
{
PictureBox pb = new PictureBox();
pb.SizeMode = PictureBoxSizeMode.StretchImage;
pb.Image = new Bitmap("C:\\Users\\user\\Desktop\\rectangle.png");
Point p = new Point(250 + i, 60 * i);
pb.Location = p;
this.Controls.Add(pb);
i++;
textBox1.Text = Convert.ToString(pb.Height);
textBox2.Text = Convert.ToString(pb.Width);
textBox3.Text = pb.Location.X.ToString();
textBox4.Text = pb.Location.Y.ToString();
}
private void button1_Click(object sender, EventArgs e)
{
PictureBox pb = new PictureBox();
pb.Height = Convert.ToInt32(textBox1.Text);
pb.Width = Convert.ToInt32(textBox2.Text);
}
2 回答
每次你这样做:
您创建一个新的
PictureBox
,与已存在的任何其他PictureBox
完全无关 . 所以在你的button1_Click
方法中,每次单击该按钮都会创建一个新的PictureBox
. 但是你永远不会显示PictureBox
,它只存在于内存中(直到方法结束,然后它就消失了) .听起来您想要设置在
buttonZ1_Click
中创建的PictureBox
的值 . 如果是这种情况,请将其作为表单上的类级变量 . 像这样的东西:此代码与您之间的唯一区别是
PictureBox
的实例是在类级别声明和创建的,而不是在每个方法中重复 . 因此每个方法都将使用PictureBox
的相同实例 . (注意命令new PictureBox()
现在只调用一次,因此只创建一个实例 . )看起来每次为
PictureBox
Control创建一个新实例,你应该在winforms Designer中为你的PictureBox控件命名,然后在后面的代码中执行类似的操作:每次单击Button时,它都会确保您使用相同的实例 .
请确保在TextBox控件上设置整数值,您可以对其进行一些验证 .