Ответы пользователя по тегу Visual Studio
  • Что правильно использовать для создания меню и тд в visual studio?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    На самом деле именно так и делается - одни элементы скрываются, другие показываются по мере необходимости. Элементы группируются и скрываются пачкой. Для упрощения обычно группы дочерних окон просто размещают в окне-контейнере и скрывают этот контейнер целиком, а все его дочерние окна скроет сама ось. И второй вариант - создавать/уничтожать окна по мере необходимости. Но вот когда окон много - это увеличивает расход памяти и нагрузку на систему, а на медленных ПК большие и сложные интерфейсы могли даже тормозить. Это 20-25 лет назад все это было важно, а сегодня даже плюс-минус гигабайт никто на заморачивается.
    Ответ написан
    2 комментария
  • Библиотека скомпилированная с гитхаб?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Да, будет. DLL именно для этого и предназначены - для использования в других приложениях.
    Ответ написан
    Комментировать
  • Как вернуть это поле в mvs 2022?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Миникарта называется.
    Ответ написан
    1 комментарий
  • Как взаимодействовать с данными из другого проекта WPF?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Выносите все общие части в отдельный проект и подключаете его как внешнюю зависимость в нужные проекты/решения.
    Ответ написан
    Комментировать
  • Как собрать консольное приложение в .exe файл без библиотек MFC в Visual Studio?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Как вариант запаковать все в один файл используя Enigma Virtual Box. Либо отказаться от MFC.
    Ответ написан
  • Как положить массив классов в JSON?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Еще есть отличная либа Newtonsoft.Json.
    Ответ написан
  • Будет ли Visual Studio работать в wine, ubuntu?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Ответ написан
    Комментировать
  • Где разместить рабочую среду, чтобы она сохранилась даже после переустановки системы?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Только полноценная виртуализация - других вариантов нет. По современным меркам виртуалка не настолько громоздкая - всего-лишь 50-100 гигов. Для полноценной разработки ПО все равно нужна полноценная ОС.
    Ответ написан
    Комментировать
  • Удалённый доступ к visual Studio?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    RDP/VNC и т.п.
    Ответ написан
    Комментировать
  • Поставил VS 2022 17.3.0. Не открывается окно nuget. Не работает Update-Database. Снова баг новой версии? Как решается?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    17.4 build 715 - все работает отлично. Имеет смысл попробовать откатить версию или переустановить - со временем студия набирает кучу всякого мусора.
    Ответ написан
    Комментировать
  • Как выполнить выгрузку информации по классу по определённому правилу?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    1. Документируете код согласно принятым стандартам, типа такого:
      /// <summary>
      /// Class description
      /// </summary>
      public class SomeClass { }

    2. В параметрах проекта на вкладке "Сборка" ставите галочку "XML-файл документации — далее файл документации можно скормить любому приложению/скрипту, понимающему xml.
    3. Далее ставите приложение Doxygen
    4. В doxygen создаете проект документации, указываете xml файл документации и все требуемые настройки и сохраняете проект в файл
    5. Теперь документацию по всему коду в удобном формате (HTML, LaTeX, RTF, Man, XML, DocBook) можно получить просто выполнив команду:
      doxygen.exe doxyproject
    Ответ написан
    4 комментария
  • Как разместить нужные компоненты на странице компонента tabControl в MS VisualStudio 2017?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Очень просто: добавляем на форму табконтрол, а в там контрол добавляем кнопку.
    Ответ написан
  • Как увидеть состояние базы (online/shutdown)?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    В простейшем случае просто подключиться к БД и периодически дергать простой запрос. Для мониторинга так же можно использовать готовые инструменты типа Zabbix.
    Ответ написан
    Комментировать
  • Как по нажатию кнопки отобразить на форме вордовский документ?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
  • Как сделать приложение готовым к передаче клиенту на Visual Studio?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Упакуйте приложение в дистрибутив/установщик и передавайте его клиенту, если это конечно входит в ТЗ. Например NSIS или NSIS + ModernUI или InnoSetup и еще куча всего. Если в ТЗ нет пункта о дистриубтиве — то просто передавайте файлы клиенту в архиве.
    Ответ написан
    Комментировать
  • Почему не открывается конструктор в Visual Studio?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Смотрите ошибки конструктора, возможно изменили код конструктора, что угодно может быть. Конструктор частенько бывает в ступоре из-за разного кода или положения элементов. Для простых форм — он отличен, но когда надо что-то нестандартное или сложное, то лучше ручками писать. Имеет смысл создать новую форму и в неё ручками потихоньку перенести код конструктора старой формы и смотреть на каком этапе конструктор ломается.
    Ответ написан
    Комментировать
  • Можно ли увеличить скорость скрывания столбцов в DataGridView?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    myControl.SuspendLayout();
    ... меняем контент в myControl ...
    myControl.ResumeLayout(false);
    myControl.PerformLayout();


    UPD
    Есть еще один дополнительный флаг для формы, который может ускорить рендеринг:
    public partial class MainWindow : Form
        {
            /// <summary>
            /// Fix for slow UI rendering
            /// </summary>
            protected override CreateParams CreateParams
            {
                get
                {
                    CreateParams cp = base.CreateParams;
                    cp.ExStyle |= 0x02000000;  // Turn on WS_EX_COMPOSITED   
                    return cp;
                }
            }
        }
    Ответ написан
  • Как исправить размытый текст в Windows Forms?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Гуглите DpiAware — изучите проблемы и выберете оптимальное решение для себя. Тут проблема в диком легаси наследии, реализованном через костыли и которое пытаются сохранить, добавляя исправления в виде костылей, которые генерируют новые баги и в новых версиях это пытаются исправить опять костылями. Кроме того, алгоритм работы масштабирования немного отличается в разных версиях ОС. Так что очень рекомендую проверять работу приложения в разных версиях ОС (7, 8.1, 10 Home, 10 Enterprise LTS) и с выключенным и включенным масштабированием. Да-да, в домашней десятке и в корпоративной долгосрочной десятке можно получить разный результат.

    Вариант 1 — вызов специальной функции в коде (реальный код, который я использую — плюс вторая функция для масштабирования шрифтов, тык — примерно так получается в 4к):
    const int WinDefaultDPI = 96;
    
    /// <summary>
    /// Исправление блюра при включенном масштабировании в ОС windows 8 и выше
    /// </summary>
    public static void DpiFix()
    {
        if (Environment.OSVersion.Version.Major >= 6)
        {
            SetProcessDPIAware();
        }
    }
    
    /// <summary>
    /// WinAPI SetProcessDPIAware 
    /// </summary>
    /// <returns></returns>
    [DllImport("user32.dll")]
    private static extern bool SetProcessDPIAware();
    
    /// <summary>
    /// Исправление размера шрифтов
    /// </summary>
    /// <param name="c"></param>
    public static float DpiFixFonts(Control c)
    {
        Graphics g = c.CreateGraphics();
        float dx = g.DpiX
            , dy = g.DpiY
            , fontsScale = Math.Max(dx, dy) / WinDefaultDPI
        ;
        g.Dispose();
        return fontsScale;
    }


    Плюс все формы имеют следующий конфиг (код, вызываемый в конструкторах форм):
    this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;


    Учтите, что AutoScaleDimensions — в конструкторе выставляется автоматически в зависимости от разрешения и DPI вашего монитора. Поэтому я не использую конструкторы. Иначе, при запуске приложения на разных машинах с разным DPI можно получить очень неожиданные результаты.

    Вариант 2 (v4.7):
    app.config
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
      </configSections>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
      </startup>
      <System.Windows.Forms.ApplicationConfigurationSection>
        <add key="DpiAwareness" value="PerMonitorV2" />
        <add key="EnableWindowsFormsHighDpiAutoResizing" value="true" />
      </System.Windows.Forms.ApplicationConfigurationSection>
    </configuration>


    Вариант 3 (v4.7):
    app.config
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <configSections>
      </configSections>
      <startup>
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7" />
      </startup>
      <System.Windows.Forms.ApplicationConfigurationSection>
        <add key="DpiAwareness" value="PerMonitorV2" />
        <add key="EnableWindowsFormsHighDpiAutoResizing" value="false" />
      </System.Windows.Forms.ApplicationConfigurationSection>
    <configuration>


    Вариант 4:
    app.manifest
    <!-- Указывает, что приложение поддерживает определение DPI и не будет автоматически масштабироваться Windows при более высоких
           значениях DPI. Приложения Windows Presentation Foundation (WPF) по умолчанию поддерживают определение DPI, им не нужно 
           специально включать параметр для этого. Для приложений Windows Forms на платформе .NET Framework 4.6, для которых задан этот параметр, необходимо 
           также задать для "EnableWindowsFormsHighDpiAutoResizing" значение "true" в файле app.config.-->
      <application xmlns="urn:schemas-microsoft-com:asm.v3">
        <windowsSettings>
          <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
        </windowsSettings>
      </application>
    Ответ написан
    6 комментариев
  • Как понизить версию (winforms project) у инсталлятора .Net framework с 4.5 на 4.0?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    Вероятно где-то в этом самом инсталляторе используется код или зависимости от версии 4.5. Лучше всего создать новый проект в нужной версии, далее перенести все настройки, зависимости и файлы исходного кода и пытаться собрать проект. Вероятно придется внести изменения в исходный код, зависимости или настройки. Еще как вариант можно использовать независимый сборщик дистрибутива — например NSIS.
    Ответ написан
    Комментировать
  • Как Запустить приложение WinForms C# на другом компьютере без Visual Studio - C#?

    VoidVolker
    @VoidVolker Куратор тега C#
    Dark side eye. А у нас печеньки! А у вас?
    1. Установить все обновления.
    2. Поставить самую свежую версию DotNet.
    3. На всякий случай проверить систему sfc /scannnow
    4. Используя Procmon.exe выяснить какой именно DLL не хватает и исправить.
    Ответ написан
    2 комментария