Где находится "платформа приложения" Winforms на C#, которая существует в VB.NET?

Раньше я разрабатывал проекты VB.NET Winforms, которые используют настройки "Windows Application Framework", которые находятся на вкладке "Приложение" в свойствах проекта:

Одна особенно полезная особенность этого - возможность создавать приложение с одним экземпляром одним щелчком флажка. Это очень хорошо работает. Вот свойства проекта C# для проекта Winforms:

О фреймворке приложения ничего нет ни на вкладке "Приложение", ни где-либо еще. Все ссылки, которые я нашел на приложения с одним экземпляром, говорят об использовании специального решения с мьютексом. Я не могу найти никакой информации о том, почему в проектах C# нет эквивалентной платформы приложений. Может кто-нибудь пролить некоторый свет на это?

1 ответ

Решение

Эти свойства доступны исключительно в типах проектов VB.Net. Если вы хотите использовать эти свойства VB.Net в проекте C#, вам необходимо добавить ссылку наMicrosoft.VisualBasic сборки и создайте собственный класс приложения, унаследованный от 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предоставляет предопределенные функции для приложения winform, которые доступны только через VB.Net. Есть много предопределенных библиотек классов вMicrosoft.VisualBasic сборки, недоступные в C#.

Другие вопросы по тегам