Задать вопрос
Ответы пользователя по тегу Windows Forms
  • Возможно ли решить по другому вывод информации?

    igolets
    @igolets
    Программист C#, MSSQL
    Пока напрашивается взять табличку, отсортировать по колонке Время и по таймеру вычислять разницу времени и пробегать по таблице, пока не найдем первое значение, которое будет больше текущего. Это и будет искомая строка. Таблицу можно прописать прямо в коде, можно во внешнем файле или БД и грузить при запуске.

    Вдогонку. Выше вижу в комментарии "difference обновляется каждую секунду" — это не совсем так. Значение difference вычисляется по тику таймера. Таймер не будет срабатывать точно раз в секунду. Всегда будет небольшая погрешность, даже если настроить его срабатывать 100 раз в секунду, то будут моменты, что по факту сработало 99 или 101 раз. Правил я как-то чужой код, где программа вычисляла, сколько времени прошло с прошлого вызова и суммировала эти промежутки. В итоге набегало порядка 7% разницы.
    Ответ написан
    Комментировать
  • Почему не открывается после сборки?

    igolets
    @igolets
    Программист C#, MSSQL
    Моя процедура поиска ошибки такая:
    1. Запустить не из студии, а из каталога bin, чтобы убедиться, что студия не влияет на это.
    2. Установить у себя и запустить
    3. Сравнить архитектуру процессора
    4. Сравнить каталог с установленной программой на целевой машине и каталог bin на девелоперской
    5. Посмотреть EventLog на целевой машине, там может быть ругань на отсутствие файла или на ошибку доступа
    6. В program.cs весть код main() обуть в try-catch и показывать содержимое эсепшена на экран, или писать в темп каталог.


    Наиболее вероятные причины сбоев:
    1. Не установлен .net нужной версии
    2. Запуск сборки х64 на х32
    3. Не установлены сторонние библиотеки
    4. Не доставлена одна из сборок
    5. Один из файлов в процессе сборки установщика побился
    6. Что-то прописано в конфиге, но требует настроки на целевой машине (строка подключения, например)
    7. Недостаточно доступа у юзера на целевой машине
    Ответ написан
    Комментировать
  • Как сделать кнопку Инфо?

    igolets
    @igolets
    Программист C#, MSSQL
    Есть такой проект, FontAwesome, в основном его используют для веба, но есть библиотеки для десктопа. Например, вот https://awesome-inc.github.io/FontAwesome.Sharp/

    Эта библиотека предлагает свой набор контролов (появляется в тулбоксе в виде отдельной группы).
    Вот такое можно сделать:
    659fa5230f7f5417068805.png
    Ответ написан
    Комментировать
  • Почему не могу добавить компонент в Win Form?

    igolets
    @igolets
    Программист C#, MSSQL
    Обычно контрол в панели появляется если открыт дизайнер подходящий (по версии .Net и т.п.).
    Ответ написан
    Комментировать
  • Имеет ли смысл использовать паттерн MVVM в приложении Winforms?

    igolets
    @igolets
    Программист C#, MSSQL
    1. WPF немного адаптирован для MVVM, но это не обязательно — масса примеров в родной документации не использует никакого MVVM. Так что я бы не связывал выбор использования MVVM с WPF.
    2. Есть готовые библиотеки для WinForms, которые умеют делать легкий MVVM. Лично я, например, работал с DevExpress и на мой взгляд, из коробки он дает даже больше, чем WPF (например, есть встроенные сервисы работы с попап окнами). Так что использовать MVVM на WinForms не сложнее, чем на WPF.
    3. И раз мы отделили вопрос MVVM от WPF/WF, нужно принципиально решать вопрос использовать ли MVVM в конкретном проекте.
    4. И, собственно, вопрос использование MVVM имеет плюсы и минусы. Плюсы — сопротивление хаосу при массированных изменениях кода, уменьшение человеческого труда при тестировании. Минусы — больше кодинга (накладные расходы на раздельную реализацию VM + юнит-тесты), не устраняет ручное тестирование до конца. Использовать MVVM без юнит-тестов смысла особо не вижу — кодить больше, выгоды никакой.


    Лично мое мнение — если нужна простая утилита «для себя», которую один раз написали и не трогают, я бы писал быстро (без MVVM и тестов). А если её будут менять, в том числе другие разработчики, а цена ошибки — деньги (например, если админятся данные клиентов по контрактам), то лучше MVVM и тесты.
    Ответ написан
    Комментировать
  • Как изменить дочерние значения в GroupBox?

    igolets
    @igolets
    Программист C#, MSSQL
    Label label1 — локальная переменная метода. Нужно её сделать полем класса и не создавать заново, если уже значение задано.

    void change(string first, string second, string third)
            {
                if(label1 == null)
                {
                    label1 = new Label();
                    groupBox1.Controls.Add(label1);
                }
                label1.Text = questions[current];
            }
    private Label label1 = null;
    Ответ написан
    Комментировать
  • Как встроить embedded webserver в .NET Winforms приложение?

    igolets
    @igolets
    Программист C#, MSSQL
    Для .Net я бы посоветовал OWIN — https://docs.microsoft.com/en-us/aspnet/core/funda...

    Самому с этой штукой поработать доводилось, встраивал в системную службу. Не вижу причин, почему оно не могло бы встроиться и в обычное приложение.

    Кстати, ASP.NET шаблоны сейчас активно используют owin.
    Ответ написан
    1 комментарий