无法从其他类访问表单中的组件

时间:2015-01-07 09:14:18

标签: c#

我用一个按钮

创建了一个普通表单
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)中的组件,但是我已经用Google搜索了内部方法,并且没有清楚地了解它。

我会感激一些帮助,即使它有点帮助。

2 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,您可以通过在设计视图中更改按钮的“修改器”属性来实现。

答案 1 :(得分:1)

尝试设置Modifiers属性。但是这不应该这样做。如果您要运行button事件的代码,请将代码移至函数并从buttonclass调用该函数。