C# 将windows窗体实例作为参数传递
我有一个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
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中生成语法错误#