C# 如何将参数从一个窗体传递到另一个窗体?

C# 如何将参数从一个窗体传递到另一个窗体?,c#,.net,C#,.net,我的程序有一个主窗体,其中保存了来自其他子窗体的值的存储库。出于某种原因,子表单给了我一个错误: 非静态字段需要对象引用 这是我的主要表格: 公共部分类frm\u系统日志:表单 { 公共frm_系统日志() { 初始化组件(); } 公共字符串TextBoxValue { //假设从其他形式获得价值 获取{返回this.textBox1.Text;} 设置{textBox1.Text=value;} } 私有无效frm\u系统日志\u加载(对象发送方,事件参数e) { Log frm_Lo

我的程序有一个主窗体,其中保存了来自其他子窗体的值的存储库。出于某种原因,子表单给了我一个错误:

非静态字段需要对象引用

这是我的主要表格:

公共部分类frm\u系统日志:表单
{
公共frm_系统日志()
{
初始化组件();
}
公共字符串TextBoxValue
{
//假设从其他形式获得价值
获取{返回this.textBox1.Text;}
设置{textBox1.Text=value;}
}   
私有无效frm\u系统日志\u加载(对象发送方,事件参数e)
{
Log frm_LoginMenu=新日志();
frm_LoginMenu.ShowDialog();
}
}
这是我的子表单:

公共部分类日志:表单
{
公共日志()
{
初始化组件();
}
私有无效按钮2\u单击(对象发送者,事件参数e)
{
//这就是错误发生的地方
frm_SystemLog.TextBoxValue=“SomeValue”;
这个。关闭();
}
}

frm\u SystemLog.TextBoxValue
无法从
按钮2\u单击访问,因为它位于不同的类中

您应该在日志表单中创建一个属性,然后在访问它时设置它的值

//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\U系统日志表单中执行此操作

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;
        }

    }

这应该可以解决您的问题。

当前,您正在尝试引用父窗体类上的对象,而不是类的实例。在这种情况下,您只能引用静态对象,因此会出现错误

您需要对父窗体实例的实际引用。更改
日志
类,如下所示:

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#中有两种方法。它们是:

  • 实例方法
  • 静态法
实例方法是在主方法之外声明的方法,只能通过创建相应类的对象来访问

类方法也在主方法之外声明,但可以在不创建类对象的情况下访问。它们应该用关键字static声明,并且可以使用classname.methodname语法访问


我必须创建一个触发器变量,因为当我调用back to frm_SystemLog时,它会重新加载日志表单。。。但代码是有用的。我想这就是问题所在……感谢你,但我要求的是解决方案。这是非常基本的东西@Henryyottabyte。我给了你要修改的代码。它到底是如何解决不了你的问题的?