Ответы пользователя по тегу Windows Forms
  • Есть ли замена Visual Studio для слабых ноутбуков на Windows 10?

    mindtester
    @mindtester Куратор тега Windows
    http://iczin.su/hexagram_48
    1 - ну по чесноку и винформы и впф, можно писать в редакторе. но для этого надо их знать существенно по лучше новичка (не верится? XAML - текстовка, и попробуйте вчитаться и осмыслить файлы форм, генереные дизайнером форм
    упорство и труд, все перетрут
    .. если сильно захотите)

    2 - лучший редактор на на замену VS - VS Code (если ваш ноут тянет Хром - потянет и VS Code upd если Хром уже тяжело - notepad++ для подсветки синтаксиса и голые SDK, уже можно творить)

    ps люди на F# пишут винформовские и WPF приложения.. как? ведь дизайнеры студии поддерживают только C# и VB ;))... просто - ручками. берут и пишут. погуглите, поищите на github

    .. ну а там глядишь, может и на апгрейд заработаете. хотя подработку можно найти не только в области ИТ. это же вопрос желания и упорства.. кто то упирается рогом, и покупает машину, или даже квартиру.. а тут ноут ;))
    Ответ написан
    Комментировать
  • Как организовать взаимодейтсвие двух форм ввода данных с третьей формой-справочником?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    по фрагментам:
    1 - тут вы создаете форму в локальной переменной form и отображаете как диалог. модально кстати, а не модельно.. если слово смущает, просто нагуглите модальное окно ))
    2 и 3 - финт с var frm = this.Owner; избавляет от незнания переменной, указывающей на экземпляр класса. но именно тут и возникает ваша проблема

    решения:
    - попробуйте рассматривать переменные главного окна, как глобальные, по отношению ко всем порождаемым окнам/диалогам. тогда можно применить другой финт - описать в классе главного окна (здесь видимо frmLScheta) поля форм нужных типов (допустим frmSprStreet SprStreet). и пользоваться ими вместо локальных переменных. получится что то вроде
    var frm = (this.Owner as frmLScheta).SprStreet;
    но такой прием требует обязательной проверки на SprStreet на null
    - более классический прием состоит в создании своего конструктора для дочерних форм (да вообще чего угодно), куда можно передавать и нормально типизированное значение главной формы, и сколь угодное количество смежных форм. естественно в классе должны быть предусмотрены соответствующие типизированные поля, куда конструктор и сохраняет эти значения (указатели по существу). проверка на null так же обязательна. ее можно выполнять в конструкторе, но надежнее в каждом методе, где такой указатель используется.

    ps

    1 - слышали понятие best practices?.. так во у вас bad practices.. попробуйте открыть 2 экземпляра frmSprStreet и работать параллельно. ну и быстро все поймете
    2
    Ничего не понял
    выходит лукавите. поняли, но не очень удачно. при этом удаляете свой камент. да еще и медальку вешаете себе - тройное лукавство. фу
    Ответ написан
  • C# WindowsForm как вывести элементы из массива в TextBox без повторений?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    char[] m = default;
    // что означает вообще null
    // где то чем то заполняем m
    var m2 = m.Distinct();
    // m2 будет иметь тип IEnumerable<char> и содержать только уникальные элементы
    // если нужен массив, тогда так
    var m2 = m.Distinct().ToArray();
    // если нужен лист, тогда так
    var m2 = m.Distinct().ToList();
    // исходный m тоже может быть и List и IEnumerable, будет работать для любого варианта
    Ответ написан
    Комментировать
  • Как перейти на папку выше?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    чуток по современнее будет так

    using System;
    using System.IO;
    
    namespace perentDir
    {
        class Program
        {
            static void Main(string[] args)
            {
                var x = Directory.GetCurrentDirectory();
                var y = Directory.GetParent(x);
                Console.WriteLine(x);
                Console.WriteLine(y);
            }
        }
    }
    Ответ написан
    Комментировать
  • C# (winform) как засунуть async и await в мой код?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - совет - не дергайте сборщик мусора по мелочам. этим вы гарантированно ухудшаете время выполнения. в то же время он и сам великолепно справится, пока вы будете рассматривать результат

    2 - осваивайте binding к внешним объектам. Windows Forms DataGridView это умеет https://docs.microsoft.com/ru-ru/dotnet/framework/...

    в простейшем случае можете потренироваться на кошечках попробовать массивы/списки (а можно и Entity Framework подтянуть, там есть вариант БД "in memory". но только если есть данные загружаемые из внешних БД, или сохраняемые в БД.. хотя EF уже весь на async/await "из коробки")

    3 - binding из бавит вас от рукопашного создания/удаления строк DataGridView. это тяжеловестные операции, учитывая что речь о визуальных эелементах

    краткое резюме - binding к массивам/спискам/бд, а их обработка во внешних процессах, или PLINQ.. или async/await - что осилите
    Ответ написан
    Комментировать
  • Как массово проверять данные с пользовательской формы?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - посмотрите события валидации - https://docs.microsoft.com/ru-ru/dotnet/api/system...
    2 - один обработчик события (метод) можно вешать на много контролов. это нормально
    Ответ написан
    Комментировать
  • Как вводить в textbox только буквы?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    а еще лучше использовать специально заготовленные события текстбокса - валидация
    Ответ написан
    Комментировать
  • Как сделать при нажатии на изображение в picturebox выделение какого-либо элемента?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    по существу - ни как.
    picturebox - это битмап. в нем нет ни каких "элементов"

    только если вы сами генерите picturebox, у вас есть:
    - возможность создать какую то координатную карту в процессе этой генерации
    - отловить координаты клика, и сопоставить их со своей картой

    иначе ни как

    ps или разбогатеть как гугл, завести такие же вычислительные мощности для распознавания "элементов" в картинках, нейронными сетями и... хотя, вам к тому моменту будет наверняка уже не до этого
    Ответ написан
  • Как рисовать, создавать анимации и визуализировать данные в wpf/uwp?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    Ответ написан
    Комментировать
  • Событие KeyPress у TextBox. Как сделать один формат для различных TextBox?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - https://duckduckgo.com/?q=winforms+TextBox+validat...
    2 - https://duckduckgo.com/?q=wpf+TextBox+validation&t...

    выбрать нужное upd и да, там не только числа вводить, можно задать форматы для только положительных чисел, количество знаков после запятой, денежных величин, даты и/или времени в нужном формате, емейлов, урлов, ФИО, и тд..
    для изучения
    самое то
    upd 2 чуть не забыл - один валидатор без проблем можно вешать на пачку однотипных полей ввода, практикуйтесь (изучите внимательнее окно свойства в дизайнере, если это винформы)
    Ответ написан
    2 комментария
  • Как изменить значение переменной в ресурсах?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    использовать БД или конфигурационные файлы (в обоих случаях полезно задумываться о безопасности - использовать шифрование, хотя бы для защиты от прямого чтения)

    а ресурсы изначально задумывались как способ хранения статических вещей, типа параметров по умолчанию, разметки по умолчанию, и тд
    Ответ написан
    Комментировать
  • Лучшие практики. Как закрыть главную форму из дочерней?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    1 - не обязательно делать "логин" главной формой. можно стартовать главную форму скрытой, а форму логина дочерней, но показывать раньше, и дальше действовать в зависимости от успешности логина

    2 - конкретно в WinForms можно отрабатывать вообще разные формы последовательно

    using System;
    using System.Windows.Forms;
    
    namespace X
    {
        internal static partial class Y
        {
            /// <summary>
            /// Главная точка входа для приложения.
            /// </summary>
            [STAThread]
            static void Main()
            {
                Application.EnableVisualStyles();
                Application.SetCompatibleTextRenderingDefault(false);
                Application.Run(A = new fmA());
                // bla-bla-bla with login
                Application.Run(B = new fmB());
            }
            internal static fmA A;
            internal static fmB B;
        }
    }


    3 - для WPF не подскажу, но наверняка оба подхода можно рассмотреть и пробовать искать аналогии

    ps для WinForms
    Как закрыть главную форму из дочерней?
    буквальный ответ - ни как, закрытие главной формы, это завершение Application.Run(A = new fmXXX()); и если вы не модифицирутете код Main- тогда это завершение программы
    Ответ написан
    2 комментария
  • Ухудшится ли защита кода от декомпиляции при использовании WinForms?

    mindtester
    @mindtester
    http://iczin.su/hexagram_48
    при использовании MFC все равно ухудшиться (ну не так конечно - форм вообще элементарно декомпилируется) тем не менее - как только начинается работа с окнами, можно отлавливать хендлы и сообщения

    в частности такие программы у на порядок проще "ботизировать" к примеру. тем же AutoIt

    upd - за протектор ни чего конкретно не скажу. любой протектор значительно усиливает защиту. строго говоря, даже бесплатный дотфускатор в комплекте студии, защитит даже программу на c#/WinForms от школоты. от профессионалов нет, но что бы вами занались профессионалы, ваша программа/данные к которым она дает доступ, должны приобрести какую то значимость. либо головокружительный коммерческий успех (либо вы напишите очередной мега опасный вирус ;)))
    Ответ написан
    Комментировать
  • Почему нету отчетов в visual studio 2015?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    а вы уверены что это не сторонняя библиотека компонентов?

    я вообще не припомню в формах такого стандартного компонента

    и если библиотечный - нужно просто уточнить что за библиотека, и подключить ее в проект студии 2015, другой вопрос - может потребоваться более свежая версия библиотеки, и бывают случаи когда разработчики не развивают библиотеки, то есть может оказаться, что совместимой версии не существует. но для начала надо просто выяснить - из какой библиотеки компонент?

    ps компонент "отчет" может казаться стандартным, если у вас вдруг у вас lightswitch проект, кажется там такое было, но это не формы, там все на silverlight основано. но и в этом случае не все просто - в 2015 это опциональный компонент студии редакции проф, в 2015 коммунити его можно поднять, доустановив OfficeDeveloperTools, но 99% что будут конфликты с Azure Tools, а выражается в том что проект невозможно опубликовать - и как разруливать, надо будет гуглить .. кстати, конвертация lightswitch проектов из 2012 в 2015 есть, но она косячит - проект может не собраться, а если даже соберется - попытки его развивать все равно вызывают косяки (это к тому что lightswitch проект в 2015 лучше пересоздавать с 0)

    .. для примера - в 2017 lightswitch вообще не существует, МС закрыл этот проект и не рекомендует его использовать

    но если точно формы - выясняйте что за библиотека
    Ответ написан
    2 комментария
  • Как создать гистограмму в C# windows forms, чтобы переменные для построения брались из базы данных MC SQL?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    разбейте проблему на 2 части:

    - как взять данные из MS SQL (если уже есть пример
    Программа на C# берёт данные из БД и выводит их
    .. можно просто скопировать) .. или гугл в помощь..

    - как отобразить данные на гистограмме? - гугл в помощь.. в частности для WinForms есть компонент "из коробки" и даже тутор к нему
    Ответ написан
    Комментировать
  • Что выбрать Windows Forms или WPF?

    mindtester
    @mindtester
    http://iczin.su/hexagram_48
    1 - если смотреть в будущее (вин10) и метить на витрину магазина МС - еще лучше сразу UWP

    2 - но мордочки для винформ тоже есть:
    - https://github.com/Wagnerp/Krypton-NET-4.7
    - https://github.com/N-a-r-w-i-n/MetroSet-UI

    3 - если метить на трудоустройство в корпоративный сектор - все популярные библиотеки компонентов .net, типа DevExpress, Telerik, Syncfusion и тд - дают триалы, не грех поиграть (там и формы, и впф и увп, и веб..)

    отдельно про Syncfusion - у них есть хитрая лицензия для практически не ограниченного бесплатного использования, даже коммерческого в каких то пределах (но подробности уже у них на сайте ищите)

    ps

    если чисто для десктопа - формы+мордочки проще и мало в чем уступают, а работа с треем по дефолту доступна именно в формах

    минус и форм и впф - встроенный браузер - это IE (тут отвечал подробно - придется осваивать или CEF# или GeckoFX, новичку это будет сложно)

    ... а в UWP - уже Edge, там все гораздо веселее

    так что нюансы свои есть везде, стоит пробовать все, а по мере понимания уже выбирать платформу исходя из особенностей задачи

    pps

    вот статья от крутого эксперта, первые два пункта как раз вам по теме почитать.. статья ооочень старая, но суть далеко не все "гуру" знают даже сегодня ;))
    Ответ написан
    Комментировать
  • Какой пакет брать, для установки C# Windows Form(Visual Studio 2017 Community)?

    mindtester
    @mindtester Куратор тега C#
    http://iczin.su/hexagram_48
    да. для винформс выбор именно такой

    PS

    точнее именно что в "рамочке", все остальное "по вкусу", но для винформ на C# нужен именно пункт "классические приложения .NET" обязательно, и ни чего более. остальное это уже сами там смотрите..
    Ответ написан
    2 комментария