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听起来像是您的图像
类型声明受到限制。尝试将其公开为lapublic 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();
}