不同窗体间修改对方控件属性

发布时间 2024-01-05 15:28:34作者: ywwwik

在WinForms应用程序中,若要从TestForm修改Form1中控件的Text属性,你需要确保Form1的实例在TestForm中是可访问的。有几种方法可以实现这一点,最常见的方法是通过构造函数传递Form1的引用,或者使用公共属性或方法来设置。

首先确保控件(在本例中为Button)在Form1中是可访问的,设置Modifiers为public。如果它是private,你需要添加一个公共方法(如上面注释掉的SetButtonText方法)来修改它的Text属性。

Form1:button1(text=待被TestFrom修改Test的按键),button2(text=打开TestForm)

 TextForm:button1(text=修改Form1按键)

确保你的TestForm有一个方法或属性可以接收Form1的引用。这可以通过在TextForm的构造函数中添加一个参数来实现。

TestForm完整代码:

using System.Windows.Forms;

namespace demo1.Views
{
    public partial class TestForm : Form
    {
        private Form1 form1instance;

        public TestForm(Form1 form1)
        {
            InitializeComponent();
            form1instance = form1;
        }

        private void button1_Click(object sender, System.EventArgs e)
        {
            form1instance.ChangeText("成功修改");
        }
    }
}

Form1的完整代码:

using demo1.Views;
using System.Windows.Forms;

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

        public void ChangeText(string Message)
        {
            button1.Text = Message;
            button1.Refresh();
        }

        private void button2_Click(object sender, System.EventArgs e)
        {
            new TestForm(this).Show();
        }
    }
}

实现效果: