Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/88: Рейтинг темы: голосов - 88, средняя оценка - 4.85
-3 / 0 / 6
Регистрация: 21.06.2015
Сообщений: 152

Используют ли сейчас Windows Forms или все перешли на WPF?

11.02.2017, 15:27. Показов 17383. Ответов 33
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Используют ли сейчас windows forms или все перешли на wpf? Насколько я знаю то винформы очень устарели. Мне интерестно используется эта технология в современных проектах.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.02.2017, 15:27
Ответы с готовыми решениями:

Windows Forms или WPF?
Добрый день! У меня есть необходимость написать некую корпоративную CRM систему для нужд компании. Вот думаю, какую технологию...

WPF или Windows Forms. Сложность
Что лучше и проще в реализации? WPF или Windows Forms? Хотя даже не то, чтобы проще или лучше, что более удобное? Сам студент, который...

Что лучше Windows Forms или WPF?
Доброго времени суток! подскажите те кто имеет опыт чем отличается приложение WPF от Windows Forms и в каких случиях что лучше использовать...

33
Эксперт .NETАвтор FAQ
 Аватар для Storm23
10425 / 5155 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
13.02.2017, 11:41
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Wolfdp Посмотреть сообщение
Т.е. в WPF биндинг на UI части по сути вынесен в само представление, без дополнительных ивентов в самой модели. В формах нам нужно вручную сообщать внутри моделей об изменениях.
Я не очень понял, что вы хотите показать своим примером. И почему вы код модели вынесли в WinForm? Модель у них одинаковая. А то может сложится впечатление, что код в WPF в десять раз короче, но это же не так.
На самом деле все отличие только в строках:
winforms:
C#
1
2
label1.DataBindings.Add("Text", model, "TestField");
textBox1.DataBindings.Add("Text", model, "TestField");
wpf:
XML
1
2
<TextBox x:Name="textBox" Text="{Binding Path=TestField}" />
<Label x:Name="label" Content="{Binding Path=TestField }" />
C#
1
grid1.DataContext = model;
1) Как по мне код в винформе выглядит проще. Он короче и собран в одном месте. В отличие от ugly xaml, в котором глаза можно сломать, и в которой нужно постоянно переключаться. (да, конечно в формах есть еще скрытый метод InitializeComponent, но я его не вижу и никогда туда не лезу, в отличие от xaml в который нужно лазить постоянно).
2) Но никто не мешает вам сделать такой биндинг, как вам нужно, в винформах. Вы почему то зациклены на стандартном биндинге. Но я например стараюсь его не использовать, а использую виртуальный режим. А если его в контроле нет, то делаю такой контрол сам. При желании, можно и xaml на винформах прикрутить, это же не есть принципиальная проблема.
3) То преимущество, что в WPF оформление отсоединено от кода - мнимое. Никакой дизайнер не будет прописывать биндинги в xaml. Дизайнер то и xaml вообще не будет использовать. Он в лучшем случае в фотошопе накидает дизайн. А xaml и бандинги - все равно придется выставлять программисту. Может где-то есть продвинутые дизайнеры, который умеют xaml, но я таких еще не встречал.
4) И еще, винформа не навязывает вам идеологию. Там ее просто нет. WPF же навязывает MVVM. Это сокращает варианты маневра по выбору паттернов.

Тем не менее я никого не агитирую за винформы. Я не думаю что новичкам обязательно нужно изучать винформы. Вопрос просто был о том, используют ли винформы. Ответ - да, используют. Категоричные заявления о том, что "все новые проекты на WPF" - мягко говоря не соответствуют действительности.
На самом деле новички будут писать не на том, на чем им хочется, а на том, на чем скажут
И если им скажут писать на винформах, а новичок знает только WPF, то упс. Профи должен знать и то и другое.
3
Эксперт .NET
 Аватар для Wolfdp
3789 / 1766 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
14.02.2017, 06:31
Цитата Сообщение от Storm23 Посмотреть сообщение
Я не очень понял, что вы хотите показать своим примером.
Тем что сильно мало работал на десктопе. =D Собственно, я и написал вроде
Цитата Сообщение от Wolfdp Посмотреть сообщение
Хорошо, поправте если не прав:
INotifyPropertyChanged явно лишний в первом примере, формы, как я уже понял, могут и с голой моделью исключительно по полям работать.

Цитата Сообщение от Storm23 Посмотреть сообщение
Как по мне код в винформе выглядит проще.
субьективно. Через код можно и на WPF лепить, но правильнее все же через Designer. По идеи представление должно знать к чему нужно обращатся, а не код указывать представению.

Цитата Сообщение от Storm23 Посмотреть сообщение
В отличие от ugly xaml, в котором глаза можно сломать
Опять же, врубаем режим дизайнера, и вообще забываем о xaml. В нем мудрить руками вообще смысла нет. Либо мне в прошлом везло на проекты, где все вопросы решались через манипуляции в режиме дизайна, без спускания в непосредственно xaml.

Цитата Сообщение от Storm23 Посмотреть сообщение
То преимущество, что в WPF оформление отсоединено от кода - мнимое. Никакой дизайнер не будет прописывать биндинги в xaml.
возможно я сильно засиделся на Web, но фишка не в том, что кто-то отдельно может писать UI, а что для него нужно только знать контракт модели, а в код можно и не лезть. Если бы это не давало профита, в WinForms с этим бы не заморачивались.

Цитата Сообщение от Storm23 Посмотреть сообщение
И еще, винформа не навязывает вам идеологию. Там ее просто нет. WPF же навязывает MVVM. Это сокращает варианты маневра по выбору паттернов.
Не пойму, что конкретно мешает использовать другие подходы?


ок, чуть прошерстил инфу для освежения памяти, по ходу в формах можно также спокойно завязать биндинг на свойствах элемента, указываемые в представлении. Т.е. из кардинальных различий остаются локализация через xaml (без понятия что из них зло) и ресурсы. А, ну и визуализация через DirectX.

p.s. на хабре вроде была статья, что если бы ребята из MS решили проблему синтаксиса xaml, по аналогии внедрения Razor в MVC, то про WinForms уже давно бы забыли.
0
 Аватар для Aferuga
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
14.02.2017, 08:06
Цитата Сообщение от SharpDeveloper Посмотреть сообщение
WinForms безнадежно устарели. В современных проектах все перешли на WPF.
Да ладно дельфи до сих пор используют...
Цитата Сообщение от Wolfdp Посмотреть сообщение
Через код можно и на WPF лепить, но правильнее все же через Designer
А как например залепить смену биндинга через код на WPF?
Скажем для отображения 10 справочников на одной форме.
Я к сожалению недолго ковырял WPF, потому что особой необходимости не было.
Мое мнение о WPF оно больше для, скажем так, программистов-дизайнеров в то время как WF больше для программистов-кодеров
А изучать лучше и то, и то по мере необходимости.
0
Эксперт .NET
 Аватар для Usaga
14088 / 9305 / 1348
Регистрация: 21.01.2016
Сообщений: 34,929
14.02.2017, 08:10
Цитата Сообщение от Aferuga Посмотреть сообщение
А как например залепить смену биндинга через код на WPF?
Просто заменить содержимое свойства или сменить контекст.
0
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
14.02.2017, 08:28
Цитата Сообщение от Aferuga Посмотреть сообщение
А как например залепить смену биндинга через код на WPF?
C#
1
2
3
4
var binding = new Binding("SelectedValue");
      binding.Source = window1.ListBox;
 
      window2.TextBox.SetBinding(TextBox.TextProperty, binding);
Добавлено через 11 минут
Цитата Сообщение от Aferuga Посмотреть сообщение
Мое мнение о WPF оно больше для, скажем так, программистов-дизайнеров
Ошибочно твоё мнение.

WPF для программистов и дизайнеров отдельно.

Программисты делают функционал и не лезут в дизайн.
Дизайнеры делают дизайн и не лезут в код.

И когда в компании работают специалисты, данная концепция разделения поддерживается.
0
 Аватар для Aferuga
644 / 528 / 324
Регистрация: 20.05.2015
Сообщений: 1,469
14.02.2017, 08:29
Цитата Сообщение от LeniumSoft Посмотреть сообщение
C#
1
var binding = new Binding("SelectedValue"); binding.Source = window1.ListBox; window2.TextBox.SetBinding(TextBox.TextProperty, binding);
Ага вот только глядя на xaml об этом не догадаешься)
0
Эксперт .NET
 Аватар для Wolfdp
3789 / 1766 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
14.02.2017, 15:04
Цитата Сообщение от LeniumSoft Посмотреть сообщение
Программисты делают функционал и не лезут в дизайн.
чуть уточню: они лезут только в его реализацию. "Дизайнер" же подразумевает его создание в виде макета.
0
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
14.02.2017, 15:54
Цитата Сообщение от Wolfdp Посмотреть сообщение
чуть уточню: они лезут только в его реализацию.
Кто лезет в реализацию?

Наши дизайнеры умеют работать с Expression Design и Expression Blend.
Код они не правят, но свободно работаю с редакторами xaml и вешают Binding-и.

Или, по-вашему, дизайнер может только psd нарисовать?
0
Эксперт .NET
 Аватар для Wolfdp
3789 / 1766 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
14.02.2017, 17:07
Цитата Сообщение от LeniumSoft Посмотреть сообщение
Кто лезет в реализацию?
девелоперы. Как правило разграничивают работу дизайнера, задача которого исключительно создать адекватный и няшный интерфейс, а девелопер уже занимается его непосредственной реализацией, причем без творческих правок.

Цитата Сообщение от LeniumSoft Посмотреть сообщение
Или, по-вашему, дизайнер может только psd нарисовать?
может конечно и совмещать верстку+дизайн. Для web очень даже актуально. Можно вообще взять универального синьора, который будет проектировать дизайн + архитектуру + тесты + деплой, и потом еще и их реализацией.
0
 Аватар для LeniumSoft
1454 / 847 / 150
Регистрация: 06.06.2012
Сообщений: 2,370
14.02.2017, 17:47
Цитата Сообщение от Wolfdp Посмотреть сообщение
может конечно и совмещать верстку+дизайн. Для web очень даже актуально.
Вот мы и пришли к сути.

WPF приближает десктопную разработку к принципам веба.

Разработка под Web с Angular 2 максимально похожа на WPF.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
14.02.2017, 23:29
taras_student, дотнет-десктоп сейчас не особо жив по большому счету. Из оставшихся в живых б0льшую часть новых проектов делают на WPF - ну просто потому, что сколько-нибудь сложное приложение без MVVM запаришься поддерживать, а для маленьких особой разницы между ними нету, и выбирают, что больше нравится, а за счет моды и хипстерства как правило побеждает как раз WPF.

Лично я за последние 4 года видел всего одно UI-приложение, оно было на винформах, и оно сдохло полгода назад. На него приходится с десяток-два WebForms/MVC/.Net Core/... приложений. Причем вебформы точно так же вымирают, как и их десктопные братья.

Добавлено через 8 минут
Цитата Сообщение от Storm23 Посмотреть сообщение
1) Как по мне код в винформе выглядит проще. Он короче и собран в одном месте. В отличие от ugly xaml, в котором глаза можно сломать, и в которой нужно постоянно переключаться. (да, конечно в формах есть еще скрытый метод InitializeComponent, но я его не вижу и никогда туда не лезу, в отличие от xaml в который нужно лазить постоянно).
Помню те же аргументы от парня с методом на 500 строк, который делал всё. А че, все в одном месте и все видно. Какие-то виртуальные функции, от которых глаза сломать можно - фи, нафиг надо. Про InitializeComponent - все становится весьма печально, когда в интерфейс приходит ООП, и контрол на странице является виртуальным и его нужно по-разному отрисовывать в зависимости от каких-то условий. Сколько я тут сломал грабель - не начитаешь. В итоге пришлось пилить свою инфраструктуру собственной инициализации поверх этой, и все это выглядело крайне убого.
2) Но никто не мешает вам сделать такой биндинг, как вам нужно, в винформах. Вы почему то зациклены на стандартном биндинге. Но я например стараюсь его не использовать, а использую виртуальный режим. А если его в контроле нет, то делаю такой контрол сам. При желании, можно и xaml на винформах прикрутить, это же не есть принципиальная проблема.
Во-первых биндинг с конвертерами в винформах не прикрутить нормально никак. Во-вторых если исходить из концепции "чего не хватает в фреймворке - допилю сам", то все они хороши - т.к. тьюринг-полны и позволяют дописать что угодно.
3) То преимущество, что в WPF оформление отсоединено от кода - мнимое. Никакой дизайнер не будет прописывать биндинги в xaml. Дизайнер то и xaml вообще не будет использовать. Он в лучшем случае в фотошопе накидает дизайн. А xaml и бандинги - все равно придется выставлять программисту. Может где-то есть продвинутые дизайнеры, который умеют xaml, но я таких еще не встречал.
Маркетинговый буллшит от майкрософта десятилетней давности про дизайнеров в WPF. Всё, что тут можно сказать, что WPF не лучше винформ. Ну ок, есть и другие причины не пинать труп.
4) И еще, винформа не навязывает вам идеологию. Там ее просто нет. WPF же навязывает MVVM. Это сокращает варианты маневра по выбору паттернов.
Сокращает варианты между MVVM и ... хммм.. А чет больше ничего нормального и нет. Не, можно всякие MVC/MVP приклеивать, но по сути это все тот же MVVM, только без биндингов, где данные нужно руками туда-сюда просовывать. Зачем, если можно доверить это машине?..

Может показаться, что я прям обожаю WPF и считаю его супер-крутой хренью.. Да ничего подобного, та еще отрыжка от Microsoft Foundation, чего одни только всякие BoolVisibilityConverter стоят, но по сравнению с винформами это просто мега-технология.
2
Эксперт .NET
 Аватар для Wolfdp
3789 / 1766 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
15.02.2017, 05:01
Цитата Сообщение от Psilon Посмотреть сообщение
Всё, что тут можно сказать, что WPF не лучше винформ. Ну ок, есть и другие причины не пинать труп.
Я после выпуска с универа, слышал инфу, что разработчики десктопных технологий хотели внедрить html+css для создания визуальной составляющей. Тогда я подума "ну нафига и сюда пихать веб?!" Сейчас я понимаю, что это была бы бомба -- разделение разметки и стилей в xaml. Текущий подход смахивает на html+style в довеске с скриптом, который не то что внешним файлом нельзя подключить, а вообще должен внутри элемента содержатся.
0
Master of Orion
Эксперт .NET
 Аватар для Psilon
6101 / 4957 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
15.02.2017, 12:12
Wolfdp, во-первых UWP-приложения можно писать на HTML+JS. Во-вторых есть NodeJS, это тоже в некоторой степени десктопная разработка (т.к. разрабатываается бэкенд). В-третьих, есть полно всяких chromium-приложений, которые пишутся фактически на HTML+JS.

С другой стороны, ресурсов жрут такие приложения (за исключением, может быть, ноды) в разы больше по сравнению со своими возможностями относительно нативных или даже кроссплатформенных Java/.Net приложений.
0
Эксперт .NET
 Аватар для Wolfdp
3789 / 1766 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
15.02.2017, 19:45
Psilon, я имел в виду использования именно в десктопе на платформе .Net. Не редко клиентское и серверное приложение имеет общие либы, например те же модели, поэтому хотелось бы все лепить на одной технологии.

Цитата Сообщение от Psilon Посмотреть сообщение
UWP-приложения можно писать на HTML+JS.
Хм, по ходу при знакомстве я только xaml заметил.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.02.2017, 19:45
Помогаю со студенческими работами здесь

Видео в бэкграунде WPF или Windows Forms?
Здравствуйте. Хочу сделать так,чтобы в моей программе бэкграундом было видео зацикленное. Можно так сделать? Реализация либо в впф либо в...

Как заполнить форму MS Word из WPF или Windows Forms?
как заполнить документ msWord через форму? Документ строится к примеру таким образом: Фамилия (данные из textBox1) Имя (данные из...

Переход к формам от консоли. Что выбрать - Windows forms или WPF?
Осилил пока страниц 300 &quot;Полное руководство С# 4.0&quot;. Хочу уйти от консоли. Посоветуйте - куда идти? Windows forms, WPF или чего еще может...

Проблемы с конструкцией async\await при использовании WPF или Windows Forms
Добрый день! Написал библиотечку, использующую, в том числе конструкции async-await. Всё работает, при компиляции в виде консольного...

Ввод чисел, расчет по формулам и построение графика. Windows Forms или WPF
Подскажите пожалуйста какое руководство/книгу для WindowsForm. Только начинаю изучать и толком не знаю как и что. Немного читал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru