C# 从类中传递和获取数据

C# 从类中传递和获取数据,c#,winforms,class,C#,Winforms,Class,我有两张表格,form1和form2。在form1中我调用form2,在这里我输入了两个数字,一个表示图片盒的高度和宽度。然后我想将数据从form2传递到form1,在那里我创建了具有所述大小的picturebox。 然后我想将高度和宽度存储到类中,然后从form1中访问该信息 这是我的密码: 表格1 namespace NPA_projekt { public partial class Form1 : Form { private Form2 f2 = new

我有两张表格,
form1
form2
。在form1中我调用form2,在这里我输入了两个数字,一个表示图片盒的高度和宽度。然后我想将数据从
form2
传递到
form1
,在那里我创建了具有所述大小的picturebox。
然后我想将高度和宽度存储到类中,然后从
form1
中访问该信息
这是我的密码:

表格1

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
{
    class image
    {
        public int width = 0;
        public int length = 0;
    }
}
当我想在
form1
中使用存储在
form2
中的值时,将其设置为原始值。有人能详细说明发生了什么事吗。
谢谢大家!

img
声明两次。一次在
Form1
中,另一次在
Form2
中。当您在
Form2
中设置
img
的宽度和高度时,您正在为您在
Form2
中声明的图像实例设置它,而不是
Form1
。您需要使
Form1
中的
img
Form2
可见,并对其执行操作

因此,将
Form1
中的
img
公开:

    public image img {get; set;}
    public Form1()
    {
        InitializeComponent();
        img = new image();
    }
然后您需要在
Form2
中访问它(一种方式应该是表单的
父属性):


我还没有全部测试过,但这种方法是有效的。消除混淆的关键是摆脱
Form2
中的
img
声明,并认识到需要从
Form2

访问
Form1
,将
img
作为Form2的属性公开,例如,
公共映像img{get;private set;}
然后在
f2.ShowDialog()之后的Form1中
call,通过
image img=f2.img获取
img
实例您的代码给了我以下错误:不一致的可访问性:属性类型“image”的可访问性不如属性“Form2”。img听起来像是您的
图像
类型声明受到限制。尝试将其公开为la
public class image{..
另外,为什么您有
Form2.img
属性?这就是您需要删除的属性。我将其设置为
public class iamge{..}
并且它现在不会给我这个错误。但是现在,当我想设置一些值,从numericupdown到width和length(在image类中)我收到错误“对象引用未设置为对象的实例”。我确实研究了它的含义,但我不知道如何修复它。另外,感谢您的帮助!这是最常见的异常之一,它意味着您试图访问某个空字段。您应该尝试在
btnOK\u Click
方法的开头设置断点,并查看这些值的用途所有内容都是。其中的某些内容都是空的,这是您不希望的。我敢打赌nudWidth,可能还有nudLength,都是空的。您必须了解为什么没有正确设置空值。没问题!问题肯定是将任何值设置为
form1.img.width
form1.img.length
,而不是jusnumericUpDown中的t值,但不是任何整数。它引发异常。
    public image img {get; set;}
    public Form1()
    {
        InitializeComponent();
        img = new image();
    }
    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();
    }