我如何将一个变量参数从一个方法获取到另一个方法
本文关键字:一个 方法 获取 另一个 参数 变量 | 更新日期: 2023-09-27 17:56:53
Hy,
我有以下构造器:
public partial class SelectSize : Form
{
public SelectSize(String name)
{
this.Name = name;
InitializeComponent();
}
public String Name
{ get; set; }
我想让 Name 在我的以下方法中使用它:
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();
但我得到名称的空引用。
如何将一个变量转移到另一个方法?
真诚地,
如果是这样。名称为 null,则调用了不同的构造函数,或者实际上将 null 传递给了构造函数。检查一下。当然,在此期间它可能已被覆盖。例如,从我们的角度来看。因为我们不知道你所有的代码,这个。名称 = 空;可能在InstanciateComponent()
.
好吧,这两个方法可能不会在此类的同一(相同)实例上执行。 比较 ojbjects 的地址,如果它们确实相等。
顺便说一句,你应该称this.Name
而不是this.name
,InstanciateComponent()
应该instanciateComponent()
.
除非你
设置它,否则名称将为空。您需要给出默认值才能获取它。
当然,它将是空引用,因为您不初始化它,您将如何设置 name 的值?
>_button1_Click_?我猜你和 Form1.Name 有碰撞
当你写的时候
this.Name = "value";
您尝试更改表单1的名称
上级:
试试这个:
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();
}
现在选择大小表单和button_Click是:
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();