c# - 将窗体实例作为参数传递

标签 c# winforms

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

public partial class Form1 : Form
    {                
        private myClass _myClass;       

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

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

最佳答案

你只需要做:

_myClass = new myClass(this);

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

public class myClass
{
    private Form1 theForm;

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

    ...
}

现在您可以从类中访问表单。我想我会避免这样做。尝试让表单负责调用类并确定它何时应该自行关闭。

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

关于c# - 将窗体实例作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20876760/

相关文章:

c# - ShowDialog 在 WPF 中的处理方式是否与 Winforms 不同?

C# WinForms - 如何通过另一个窗体从一个窗体的文本框中检索数据?

c# - ComboBox items.count 与数据源不匹配

c# - ASP.NET Core 2.0 - 提供没有扩展名的文件

c# - 如何在 C# 中记录输入 (keyListener)

c# - 一次从 DataTable 到 Excel 的范围?

c# - 从 IList<T> 转换为非泛型 IList

c# - 如何解决 Unable to cast object of type 'System.Data.DataView' to type 'System.Data.DataTable' ERROR

c# - Visual Studio 2010 是否会为 WPF 中的功能区提供开箱即用的支持?

c# - Asp.NET Core 自定义 Input Tag Helper 呈现重复的复选框