Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将windows窗体实例作为参数传递_C#_Winforms - Fatal编程技术网

C# 将windows窗体实例作为参数传递

C# 将windows窗体实例作为参数传递,c#,winforms,C#,Winforms,我有一个windows窗体,它正在调用另一个类的方法,需要作为参数传递 public partial class Form1 : Form { private myClass _myClass; public Form1() { InitializeComponent(); _myClass = new myClass(//pass this i

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

public partial class Form1 : Form
    {                
        private myClass _myClass;       

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

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

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

public class myClass
{
    private Form otherForm;

    public myClass(Form form) 
    {
        otherForm = form;
    }
}
并从
表单1中调用它:

_myClass = new myClass(this);
当然你可以:

_myClass = new myClass(this);
你只要做:

_myClass = new myClass(this);
然后更改myClass中的构造函数:

public class myClass
{
    private Form1 theForm;

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

    ...
}
现在,您可以从类中访问表单。不过我想我应该避免这样做。试着让表单负责调用类并决定何时关闭自己


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

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

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

我想不出你想要实现什么。但是如果你只是想通过这个表格,你可以用这个

_myClass = new myClass(this);

你是说我不把表单作为参数传递给类?首先我想把我的表单作为参考参数来传递。这个类是系统托盘-它应该在按下按钮时打开和关闭表单。我猜在打开或关闭表单时,我不会对表单本身进行任何修改。这就是我需要引用的原因。使用
参数化构造函数
可以传递一个可能的重复的参数,因为它包含只读属性并在c中生成语法错误#