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)
{