3

我过去开发过使用“Windows 应用程序框架”设置的 VB.NET Winforms 项目,这些设置位于项目属性的“应用程序”选项卡上:

在此处输入图像描述

其中一个特别有用的功能是能够通过单击复选框来制作单实例应用程序。这很好用。这是 Winforms 项目的 C# 项目属性:

在此处输入图像描述

没有关于应用程序框架的内容,无论是在“应用程序”选项卡上还是其他地方。我发现的所有关于“单实例”应用程序的引用都在谈论使用带有互斥锁的自定义解决方案。我找不到任何关于为什么 C# 项目中没有等效应用程序框架的信息。任何人都可以对此有所了解吗?

4

1 回答 1

5

这些属性仅在 VB.Net 项目类型中可用。如果您想在 C# 项目中使用这些 VB.Net 属性,那么您需要添加对Microsoft.VisualBasic程序集的引用并创建您的自定义 App 类继承自Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase访问项目属性中出现的受保护成员并通过您的自定义应用程序运行您的 windows 窗体应用程序类而不是 C# 应用程序类方法。

static class Program
{
    [STAThread]
    static void Main(string[] args)
    {
        var app = new MyApp(new Form1());
        app.Run(args);
    }
}

internal class MyApp : Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase
{
    public MyApp(Form mainForm)
    {
        this.EnableVisualStyles = true;
        this.SaveMySettingsOnExit = true;
        this.IsSingleInstance = true;
        this.MainForm = mainForm;
    }
}

Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase为仅通过 VB.Net 提供的 winform 应用程序提供预定义的功能。Microsoft.VisualBasic程序集中有许多在 C# 中不可用的预定义类库。

于 2019-12-10T16:32:43.423 回答