加载第二个表单时更新c#表单

时间:2015-09-27 14:42:26

标签: c# forms

我在使用c#更新表单内的文本框时遇到问题,同时加载第二个表单。

我的申请表中有两种表格。首先加载form1,然后加载form2

加载form2时,应该使用一些文本(在这种情况下为textbox.txt)更新form1中的F2:Running,表明它已加载。

感谢任何形式的帮助,这是当前的代码:

namespace EditingBox {
    static class Program {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main() {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

namespace EditingBox {
    public partial class Form1: Form {
        public Form1() {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e) {

            Form2 F2 = new Form2();
            Form1 F1 = new Form1();

            F2.Show();
            textBox1.Select();
            textBox1.Refresh();
        }

        public void textBox1_TextChanged(object sender, EventArgs e) {

        }

        private void label1_Click(object sender, EventArgs e) {

        }
    }
}

namespace EditingBox {
    public partial class Form2: Form {
        public Form2() {
            InitializeComponent();
            Form1 F1 = new Form1();
            F1.textBox1.Select();
            F1.textBox1.Text = "F2:Running";
            F1.textBox1.Refresh();
        }

        private void Form2_Load(object sender, EventArgs e) {
            Form1 F1 = new Form1();
            F1.textBox1.Select();
            F1.textBox1.Text = "F2:Running";
            F1.textBox1.Refresh();
        }
    }
}

2 个答案:

答案 0 :(得分:3)

您需要在创建时从原始表单传递Form1 this实例。目前:  Form1 F1 = new Form1();正在创建form1的新实例,而不是显示的实例。因此,您需要做的就是将Form1 form1添加到form2的构造函数中,并在显示它时调用该构造函数:

    public Form2(Form1 F1)
    {
        InitializeComponent();
        F1.textBox1.Select();
        F1.textBox1.Text = "F2:Running";
        F1.textBox1.Refresh();
    }


    private void Form1_Load(object sender, EventArgs e)
    {

        Form2 F2 = new Form2(this);

        F2.Show();
        textBox1.Select();
        textBox1.Refresh();
    }

答案 1 :(得分:0)

您可以将Form1传递给Form2构造函数:

namespace EditingBox
{
    public partial class Form2 : Form
    {
        Form1 _form1;
        public Form2(Form1 form1)
        {
            InitializeComponent();
            _form1 = form1;
            _form1.textBox1.Select();
            _form1.textBox1.Text = "F2:Running";
            _form1.textBox1.Refresh();
        }

        private void Form2_Load(object sender, EventArgs e)
        {
            _form1.textBox1.Select();
            _form1.textBox1.Text = "F2:Running";
            _form1.textBox1.Refresh();
        }
    }
}