Visual Studio C#从一个窗体运行方法并在另一个窗体上显示

6yoyoihd  于 2023-01-09  发布在  C#
关注(0)|答案(1)|浏览(410)

我知道这听起来可能很基础,但作为一个初学者,我对以下几点感到困惑:
我有两个表单,第一个是进行所有连接和计算的表单,第二个是显示所有结果的表单。
FORM1,在这里我调用打开第二个窗体.

private void button_Click1(object sender, EventArgs e)
        {
            Button selected = sender as Button;
            openClientForm(new Form2());
        }
private Form activeForm = null;
        private void openClientForm( Form clientForm)
        {
            if (activeForm != null)
                activeForm.Close();
            activeForm = clientForm;
            clientForm.TopLevel = false;
            clientForm.FormBorderStyle = FormBorderStyle.None;
            clientForm.Dock = DockStyle.Fill;
            panelClientForm.Controls.Add(clientForm);
            panelClientForm.Tag = clientForm;
            clientForm.BringToFront();
            clientForm.Show();
        }

表格2)

public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
            //Form2_Load();
            updateText(txtCmdConsole, Form1.cmdres);
        }


        private void updateText(TextBox text, string strdata)
        {
            text.AppendText(strdata);

        }
    }

我有一个问题。
1.当我打开第二个窗体时,我如何运行窗体1中的方法updateText并在第二个窗体中显示结果?我问这个问题的原因是form1应该仍然在后台运行,如果满足某个条件,我希望update text在窗体1中运行(从那里获取值)并更新第二个窗体。

bqujaahr

bqujaahr1#

首先,你的activeForm应该是Form2类型,而不仅仅是Form,否则你不能从它调用特定的方法(至少不容易)。

private Form2 activeForm = null;
    private void openClientForm(Form2 clientForm)
    {
        if (activeForm != null)
            activeForm.Close();
        activeForm = clientForm;

    //...

然后,Form2可以提供一个公共接口来从外部更新某些文本,使用不期望内部控件作为参数的方法。

// inside Form2
    public void UpdateCmdText(string strdata)
    {
        updateText(txtCmdConsole, strdata);
    }

现在,您可以在Form1中的任何位置调用此方法:

activeForm.UpdateCmdText(someNewResult)

希望这个有用。

相关问题