将windows表单实例作为参数传递

时间:2014-01-02 05:14:50

标签: c# winforms

我有windows窗体,它调用另一个类的方法,需要作为参数传递。

public partial class Form1 : Form
    {                
        private myClass _myClass;       

        public Form1()
        {
            InitializeComponent();
            _myClass = new myClass(//pass this instance - Form1 - as parameter)
        }
    }

但我不知道如何将Form1实例作为参数传递?我需要这样做,因为这个其他类正在创建系统托盘图标和菜单条,并且能够关闭父窗体。

5 个答案:

答案 0 :(得分:4)

你只是这样做:

_myClass = new myClass(this);

然后在myClass中更改构造函数:

public class myClass
{
    private Form1 theForm;

    public myClass(Form1 theForm)
    {
        this.theForm = theForm;
    }

    ...
}

现在您可以在课程中访问该表单。我想我会避免这样做。尽量让表格负责打电话给班级,并确定何时应关闭班级。

让类将引用保存回实例化它的表单,并从类中关闭它似乎可能导致混乱和可维护性问题。

答案 1 :(得分:3)

只需在另一个类构造函数中声明类型为Form的参数:

public class myClass
{
    private Form otherForm;

    public myClass(Form form) 
    {
        otherForm = form;
    }
}

并从Form1

中调用它
_myClass = new myClass(this);

答案 2 :(得分:2)

我无法弄清楚你想要达到的目标。但是如果你只是想通过这个表格而不是你可以使用它。

_myClass = new myClass(this);

答案 3 :(得分:1)

当然可以:

_myClass = new myClass(this);

答案 4 :(得分:0)

除非我遗漏了什么,否则这应该是相当简单的:

    public Form1(myClass instance)
    {
        InitializeComponent();
        _myClass = instance;
    }