无法访问不同类中窗体中的组件

本文关键字:窗体 组件 同类 访问 | 更新日期: 2023-09-27 18:36:28

我用一个按钮创建了一个普通表单

namespace MultiServer
{
    public partial class Form1 : Form
    {
        public int i;//this I can access because it's global public
        public Form1()
        {
            InitializeComponent();
        }
        private void btnStartServer_Click(object sender, EventArgs e)
        {
            IPAddress ipAddress = Dns.GetHostEntry("localhost").AddressList[0];
            TcpListener listener = new TcpListener(ipAddress, 13);
            ListenForConnections lfc = new ListenForConnections(listener, this);
        }
    }
}

ListenForConnections类中,我可以访问int i,因为它不受保护。但是,为什么我的按钮在类Form1中受到保护? 无论如何都可以通过ListenForConnections类访问所有组件吗?

namespace MultiServer
{
    class ListenForConnections
    {
        Form1 form;
        TcpListener listener;
        public ListenForConnections(TcpListener l, Form1 f)
        {
            this.listener = l;
            this.form = f;
            form.i = 10;
        }
    }
}

如您所见,我创建了一个Form1实例并在构造函数中声明它。我可以访问变量,但不能访问按钮。

我知道我可以创建内部方法来更新主类(form1)中的组件,但是我已经用谷歌搜索了内部方法,并且没有清楚地了解它。

我将不胜感激一些帮助,即使是一点点。

无法访问不同类中窗体中的组件

如果我正确理解了您的问题,您可以通过在设计视图中更改按钮的"修饰符"属性来做到这一点。

尝试设置 Modifiers 属性。但是,这不应该以这种方式进行。如果要运行button事件的代码,请将代码移动到函数中,并从buttonclass调用该函数。