c# - 在静态方法中使用 Winform 对象

标签 c# winforms methods static

我有一个可以忽略很长时间的问题,但现在我必须解决它。
我有 3 个 GUI (Winform) 1 个主要 1 个设置和 1 个用于 Web 浏览器。
我需要在主窗体内调用 Web 浏览器窗体中的方法,因此该方法是静态方法。

但是,如果我将其设置为静态,如果我尝试使用表单中的对象,则会出现错误。

    public partial class Form3 : Form
{
    public Form3()
    {
        InitializeComponent();
    }
    public static void WebLyrics(string url){
        webBrowser1.Navigate(url);
    }
}

最佳答案

最简单的方法是:

向网络浏览器表单添加静态Instance 属性:

public partial class Form3 : Form
{
    public Form3()
    {
        InitializeComponent();
        Instance = this;
    }

    public static Form3 Instance { get; private set; }

    public void WebLyrics(string url)
    {
        webBrowser1.Navigate(url);
    }
}

并通过其他形式的 Instance 属性调用 WebLyrics 方法:

public partian class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void Navigate() 
    {
        Form3.Instance.WebLyrics("www.stackoverflow.com");
    }
}

我假设您以某种方式在某处创建了这两种表单...

关于c# - 在静态方法中使用 Winform 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27677127/

相关文章:

c# - .NET 的 WinForms 的 WindowLicker?

c# - 如何生成 .svc 文件?

c# - 在 Windows 浏览器窗体中停用鼠标中键移动

c++ - 调用基类的重载方法

c++ - 如何使用来自另一个函数的字符串?

c# - container.ListBlobsSegmented 与 blobclient.ListBlobsWithPrefix 之间有什么区别?

c# - 您如何检测文件何时被放入 Windows 资源管理器?

c# - 避免来自 ASP.NET 中的 View 的双重请求的最佳实践

c# - 像在 WPF 中一样在 winform 中绑定(bind)

java - 如何将字符串中的字符转换为数字(转换为电话号码)?