我有2个表单,form1
和form2
。在form1中我调用form2,在那里我输入2个数字,一个用于高度和一个图片框的宽度。然后我想将这些数据从form2
传递到form1
,在那里我创建了具有所述尺寸的图片框。
然后我想将高度和宽度存储到类中,然后从form1
访问该信息
这是我的代码:
Form1
namespace NPA_projekt
{
public partial class Form1 : Form
{
private Form2 f2 = new Form2();
image img = new image();
public Form1()
{
InitializeComponent();
}
private void newToolStripMenuItem_Click(object sender, EventArgs e)
{
f2.ShowDialog();
}
private void btnTest_Click(object sender, EventArgs e)
{
pbMainArea.Width = img.width;
pbMainArea.Height = img.length;
}
}
}
窗体2
namespace NPA_projekt
{
public partial class Form2 : Form
{
image img = new image();
public Form2()
{
InitializeComponent();
}
//reset btn
private void button1_Click(object sender, EventArgs e)
{
nudWidth.Value = 640;
nudLength.Value = 400;
}
//cancel btn
private void button3_Click(object sender, EventArgs e)
{
this.Close();
}
//ok btn
private void btnOK_Click(object sender, EventArgs e)
{
img.width = Convert.ToInt32(nudWidth.Value);
img.length = Convert.ToInt32(nudLength.Value);
this.Close();
}
}
}
班级形象
namespace NPA_projekt
{
class image
{
public int width = 0;
public int length = 0;
}
}
当我想在form2
中使用时,存储在form1
中的值会设置为原始值。有人可以详细说明发生了什么。
谢谢大家!
答案 0 :(得分:0)
img
被宣布两次。进入Form1
并再次进入Form2
。当您在img
中设置Form2
的宽度和高度时,您要为Form2
中Form1
中声明的图像实例设置它,而不是img
。您需要将Form1
中的Form2
显示为img
并对其执行操作。
因此,请在Form1
public {/ p>中设置 public image img {get; set;}
public Form1()
{
InitializeComponent();
img = new image();
}
Form2
然后你需要在Parent
中访问它(一种方式应该是表单的 private void btnOK_Click(object sender, EventArgs e)
{
var form1 = (Form1)this.Parent
form1.img.width = Convert.ToInt32(nudWidth.Value);
form1.img.length = Convert.ToInt32(nudLength.Value);
this.Close();
}
属性):
img
我还没有对此进行全面测试,但这种方法是有效的。消除混淆的关键是摆脱Form2
中的Form1
声明,并意识到您需要从Form2
MessageBox.Show("Your text here", "Information", MessageBoxButtons.OK, MessageBoxIcon.None);