C# 如何从一个方法到另一个方法获取一个变量参数
Hy 我有以下结构:C# 如何从一个方法到另一个方法获取一个变量参数,c#,variables,methods,C#,Variables,Methods,Hy 我有以下结构: public partial class SelectSize : Form { public SelectSize(String name) { this.Name = name; InitializeComponent(); } public String Name { get; set; } 我想在下面的方法中使用它: p pr
public partial class SelectSize : Form
{
public SelectSize(String name)
{
this.Name = name;
InitializeComponent();
}
public String Name
{ get; set; }
我想在下面的方法中使用它:
p private void button1_Click(object sender, EventArgs e)
{
if (((int.Parse(noRows.Text) % 2) == 0) && (((int.Parse(noCols.Text) % 2) == 0)) && ((int.Parse(noRows.Text) ==
int.Parse(noCols.Text))) && ((int.Parse(noRows.Text) > 6) && ((int.Parse(noRows.Text) > 6))))
{
//String name = this.Name;
PlayMe f = new PlayMe(int.Parse(noCols.Text), int.Parse(noCols.Text), Name);
this.Hide();
f.ShowDialog();
this.Close();
但我得到了空的名称引用
如何将一个变量转换为另一个方法
同样地,如果此.Name为null,则调用了另一个构造函数,或者实际将null传递给了构造函数。检查一下。 当然,它可能同时被覆盖了。从我们的角度来看。由于我们不知道您的所有代码,因此,this.Name=null;可能位于
InstanciateComponent()
中
好吧,这两个方法可能不会在这个类的同一(相同)实例上执行。比较对象的地址是否相等
顺便说一句,您应该调用
this.Name
而不是this.Name
并且InstanciateComponent()
应该是InstanciateComponent()
名称将为空,除非您设置它。您需要提供一个默认值来获取它。当然它将是空引用,因为您没有初始化它,您将如何设置名称的值?按钮1\u单击\u?
我猜你和Form1.Name有冲突
当你写作时
this.Name = "value";
您试图更改表单1的名称
UPD:
试试这个:
namespace test
{
public partial class SelectSize : Form
{
public SelectSize(String name)
{
InitializeComponent();
this.Name = name;
}
public String Name
{ get; set; }
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(this.Name); // It must show a string from SelectSize's constructor
}
}
}
我现在不知道我上面的代码不起作用的原因 谢谢你们的帮助,你们的建议让我改进了我的代码并找到了解决方案 初始形式如下所示:
private void nXNGameToolStripMenuItem_Click(object sender, EventArgs e)
{
SelectSize ss = new SelectSize(this);
ss.ShowDialog();
}
现在选择Size Form并单击按钮:
public partial class SelectSize : Form
{
MainWin f1;
public SelectSize(MainWin f1)
{
this.f1 = f1;
InitializeComponent();
}
public String Name
{ get; set; }
private void button1_Click(object sender, EventArgs e)
{
if (((int.Parse(noRows.Text) % 2) == 0) && (((int.Parse(noCols.Text) % 2) == 0)) && ((int.Parse(noRows.Text) ==
int.Parse(noCols.Text))) && ((int.Parse(noRows.Text) > 6) && ((int.Parse(noRows.Text) > 6))))
{
//String name = this.Name;
PlayMe f = new PlayMe(int.Parse(noCols.Text), int.Parse(noCols.Text), f1.Name);
this.Hide();
f.ShowDialog();
this.Close();
这两个方法在同一个类中吗?是的,它们是。构造函数中的名称来自另一种形式。构造函数正确地接收其参数。在构造函数中接收时,名称不为null,但在button1_Click()中为null:-(名称在SelectSize(字符串名称)构造函数中有一个值。是。我更改了Form1的名称,并在PlayMe表单签名PlayMe f=new PlayMe(int.Parse(noCols.Text),int.Parse中使用此名称作为参数(noCols.Text),名称);