C# .Net Properties (GET, SET) returns 添加文本时空白
C# .Net Properties (GET, SET) returns blank when i add text
大家好,这是我在 google 的数小时后陷入困境的第二天。
我有一个表格和一个 class 是繁重的代码,在表格中我有一些复选框和文本框,当 class 程序 运行s 基于复选框时,代码将 运行只是部分代码。
但是,如果我尝试 return 一个复选框,它只会 return false 或者如果我尝试文本框它只会 return 空白 eaven 如果我勾选文本框或者如果我向文本框添加文本。
namespace WinFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show("Lading");
this.textBox1.Text = "THIS IS TXT.1";
this.textBox2.Text = "THIS IS TXT.2";
this.checkBox1.Checked = true;
this.checkBox2.Checked = true;
}
private void button1_Click(object sender, EventArgs e)
{
Work_.Work wrk = new Work_.Work();
wrk.Testing();
}
private string result1;
public string test1
{
get { return result1 = this.textBox1.Text; }
set { }
}
private string result2;
public string test2
{
get { return result2 = this.checkBox1.Checked.ToString(); }
set { }
}
}
}
和 class 文件(添加到“工作”文件夹)
namespace WinFormsApp1.Work_
{
class Work
{
public void Testing()
{
Form1 form = new Form1();
string Return = form.test1;
MessageBox.Show(Return);
string Return2 = form.test2;
MessageBox.Show(Return2);
}
}
}
在您的 Work
class 中,您正在创建一个新的 Form
,因此访问它不会为您提供原始表单中的值。一种方法是将表单传递给您的 Work
class,如下所示:
private void button1_Click(object sender, EventArgs e)
{
Work_.Work wrk = new Work_.Work();
wrk.Testing(this);
}
并且在 Work
class:
public void Testing(Form1 form)
{
string Return = form.test1;
MessageBox.Show(Return);
string Return2 = form.test2;
MessageBox.Show(Return2);
}
这个 属性 的定义可能不是你想要的:
private string result1;
public string test1
{
get { return result1 = this.textBox1.Text; }
set { }
}
这会使用文本框的内容更新变量 result1
并 return 它。您在这里根本不需要变量。只需将 属性 简化为
public string test1
{
get { this.textBox1.Text; }
}
然而,您的实际问题是,如果您不显示对话框,Form1_Load
方法将永远不会执行。在 Form1 form = new Form1();
.
后插入 form.ShowDialog()
大家好,这是我在 google 的数小时后陷入困境的第二天。 我有一个表格和一个 class 是繁重的代码,在表格中我有一些复选框和文本框,当 class 程序 运行s 基于复选框时,代码将 运行只是部分代码。 但是,如果我尝试 return 一个复选框,它只会 return false 或者如果我尝试文本框它只会 return 空白 eaven 如果我勾选文本框或者如果我向文本框添加文本。
namespace WinFormsApp1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
MessageBox.Show("Lading");
this.textBox1.Text = "THIS IS TXT.1";
this.textBox2.Text = "THIS IS TXT.2";
this.checkBox1.Checked = true;
this.checkBox2.Checked = true;
}
private void button1_Click(object sender, EventArgs e)
{
Work_.Work wrk = new Work_.Work();
wrk.Testing();
}
private string result1;
public string test1
{
get { return result1 = this.textBox1.Text; }
set { }
}
private string result2;
public string test2
{
get { return result2 = this.checkBox1.Checked.ToString(); }
set { }
}
}
}
和 class 文件(添加到“工作”文件夹)
namespace WinFormsApp1.Work_
{
class Work
{
public void Testing()
{
Form1 form = new Form1();
string Return = form.test1;
MessageBox.Show(Return);
string Return2 = form.test2;
MessageBox.Show(Return2);
}
}
}
在您的 Work
class 中,您正在创建一个新的 Form
,因此访问它不会为您提供原始表单中的值。一种方法是将表单传递给您的 Work
class,如下所示:
private void button1_Click(object sender, EventArgs e)
{
Work_.Work wrk = new Work_.Work();
wrk.Testing(this);
}
并且在 Work
class:
public void Testing(Form1 form)
{
string Return = form.test1;
MessageBox.Show(Return);
string Return2 = form.test2;
MessageBox.Show(Return2);
}
这个 属性 的定义可能不是你想要的:
private string result1;
public string test1
{
get { return result1 = this.textBox1.Text; }
set { }
}
这会使用文本框的内容更新变量 result1
并 return 它。您在这里根本不需要变量。只需将 属性 简化为
public string test1
{
get { this.textBox1.Text; }
}
然而,您的实际问题是,如果您不显示对话框,Form1_Load
方法将永远不会执行。在 Form1 form = new Form1();
.
form.ShowDialog()