Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从另一个表单c调用函数_C# - Fatal编程技术网

C# 从另一个表单c调用函数

C# 从另一个表单c调用函数,c#,C#,我有一个主窗体,带有一个函数,可以更改主窗体上文本框的文本,代码如下: 主要形式和功能: public void consoleLog(string message) { txtConsoleLog.Text += Environment.NewLine; txtConsoleLog.Text += message; txtConsoleLog.SelectionStart = txtConsoleLog.TextLength;

我有一个主窗体,带有一个函数,可以更改主窗体上文本框的文本,代码如下:

主要形式和功能:

    public void consoleLog(string message)
    {
        txtConsoleLog.Text += Environment.NewLine;
        txtConsoleLog.Text += message;
        txtConsoleLog.SelectionStart = txtConsoleLog.TextLength;
        txtConsoleLog.ScrollToCaret();
        txtConsoleLog.Refresh();
    }
现在,当我单击如下按钮时,我打开了一个名为frm connect的新表单:

    private void connectToolStripMenuItem_Click(object sender, EventArgs e)
    {
        Form frmConnect = new FrmConnect(this);
        frmConnect.Show();
    }
这是下面的FRM连接

public partial class FrmConnect : Form
{
    private Form mainForm;

    public FrmConnect(Form frmMain)
    {
        this.mainForm = frmMain;
        InitializeComponent();
    }

    private void btnConnect_Click(object sender, EventArgs e)
    {
        FrmMain.Connected = true;
        mainForm.consoleLog("Connected");
    }
}
因此,当我点击一个按钮时,我想调用这个函数,但它说它不包含它的定义,我还试图更改主窗体上的“Connected”变量,该变量仅通过引用FrmMain来工作,但我能使用mainForm实现吗。Connected=true


如果我将函数更改为public static,它将通过引用FrmMain来工作,但由于我无法在非静态方法或类似方法中引用对象,因此txtConsoleLog会出现错误,当您将表单传递到构造函数中并将其存储为私有成员变量时,会收到任何帮助,在这两个地方,您都将其声明为基类型表单。为了对定义的类型使用方法,参数和变量的类型应为FrmMain

你应该改变

private Form mainForm;

public FrmConnect(Form frmMain)
{


这将使您能够在FrmConnect类的其他方法中访问FrmMain上的所有公共属性

现在,当我尝试这样做时,它说不能隐式地将type system.windows.Forms.Form转换为Project1.FrmMain。mainForm=FrmMain;像我一样在两个地方都换。你的私人表格mainForm;现在,当我尝试这样做时,它说不能隐式地将type system.windows.Forms.Form转换为Project1.FrmMain。mainForm=FrmMain;您确定两个位置的类型都已更改吗?
private Form mainForm;

public FrmConnect(Form frmMain)
{
private FrmMain mainForm;

public FrmConnect(FrmMain frmMain)
{