如何将参数从一个窗体传递到另一个窗体
本文关键字:窗体 一个 另一个 参数 | 更新日期: 2023-09-27 18:19:32
我的程序有一个主窗体,我在其中保存其他子窗体的值存储库。由于某种原因,子表单给了我一个错误:
非静态场需要一个对象参考
这是我的主要表格:
public partial class frm_SystemLog : Form
{
public frm_SystemLog()
{
InitializeComponent();
}
public string TextBoxValue
{
// suppose to get value from other forms
get { return this.textBox1.Text; }
set { textBox1.Text = value; }
}
private void frm_SystemLog_Load(object sender, EventArgs e)
{
Log frm_LoginMenu = new Log();
frm_LoginMenu.ShowDialog();
}
}
这是我的子表格:
public partial class Log : Form
{
public Log()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
// this is where the error happens
frm_SystemLog.TextBoxValue = "SomeValue";
this.Close();
}
}
您应该在日志表单中创建一个属性,然后在访问时设置其值
//in log form
public String MyValue{get;set;}
然后在日志表单的按钮2的属性中,选择dialogresult并将其设置为ok然后在你的按钮2点击事件
private void button2_Click(object sender, EventArgs e)
{
MyValue = "SomeValue";
//no need to close ,dialogresult will do it...
}
然后在frm_SystemLog表单中执行此
private void frm_SystemLog_Load(object sender, EventArgs e)
{
Log frm_LoginMenu = new Log();
frm_LoginMenu.ShowDialog();
if(frm_LoginMenu.ShowDialog() == DialogResult.OK)
{
this.TextBoxValue = frm_LoginMenu.MyValue;
}
}
这应该能解决你的问题。
frm_SystemLog.TextBoxValue
不能从button2_Click
访问,因为它在不同的类中。
当前您正在尝试引用父窗体类上的对象,而不是类的实例。在这种情况下,您只能引用静态对象,因此会出现错误。
您需要一个对父窗体实例的实际引用。按如下方式更改Log
类:
public partial class Log : Form
{
private frm_SystemLog parentForm;
public Log(frm_SystemLog parentForm)
{
InitializeComponent();
this.parentForm = parentForm;
}
...
...
然后使用实例化您的子表单
Log frm_LoginMenu = new Log(this);
读取";理解C#中的类、方法和属性;获取更多信息,特别是:
C#中有两种方法。它们是:
- 实例方法
- 静态方法
实例方法是在主方法之外声明的方法,只能通过创建相应类的对象来访问。
类方法也在主方法之外声明,但可以在不创建类的对象的情况下访问。它们应该用关键字static声明,并且可以使用classname.methodname语法进行访问。