VB.NET中存在的C#中的Winforms“应用程序框架”在哪里?

ror*_*.ap 3 .net c# vb.net application-framework winforms

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

在此处输入图片说明

其中一个特别有用的功能是只需单击一下复选框即可创建单实例应用程序。这非常有效。这是 Winforms 项目的 C# 项目属性:

在此处输入图片说明

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

ven*_*mit 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase为 winform 应用程序提供预定义的功能,这些功能只能通过 VB.Net 使用。程序集中有许多Microsoft.VisualBasicC# 中没有的预定义类库。