Чем плох windows forms

Преимущества и недостатки Windows Forms

Какие плюсы и минусы у Windows Forms? Чем удобна?

Добавлено через 6 часов 32 минуты
поднимаю

Тонкости TCP сервера приложений (преимущества и недостатки синхронных и асинхронных методов)
Есть ли преимущество у метода BeginAcceptTcpClient() перед синхронным AcceptTcpClient если его.

Чем Windows 7 лучше XP. Преимущества и недостатки.
Чем Windows 7 лучше XP. Преимущества и недостатки.

Преимущества и недостатки Reg Organizer
установил RegOrganizer, слышал про неё много расхожих мнений, кто — то считает её полнейшей.

Cat, more, less: какие преимущества/недостатки?
здравствуйте просмотреть файла с команд cat ,more ,less. Какая из них будет более удобна?? и.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

QuickSort и MergeSort: недостатки и преимущества
Добрый вечер! Qsort плоха тем, что в худшем случае работает за О(n^2). Mergesort стабильна и.

Работа за рубежом. Преимущества и недостатки.
Что вы можете сказать про работу зарубежом? Какие она имеет преимущества и недостатки перед работой.

В чем преимущества и недостатки программы CorelDraw
добрый день, форумчане. Подскажите — в чем преимущества и недостатки (по вашему мнению) программы.

Преимущества и недостатки MASM32 по сравнению с TASM.
Каковы преимущества и недостатки MASM32 по сравнению с TASM?

Windows Forms Designer — плохая практика?

Я посмотрел одно видео (лекцию), в котором автор убеждал, что использование дизайнера в Windows Forms — это очень плохо и вообще дело минувших дней. Если использовать этот дизайнер, то получается (извините) говнокод, который очень трудно развивать и дополнять. Это было не то что бы откровение, просто возникает резонный вопрос, а стоит ли оно всех усилий?

Просто вот так вручную верстать все эти кнопочки, эм, ну занятие не самое веселое откровенно говоря.

Возможно, у Вас будет достойный пример, подтверждающий слова лектора 🙂

2 ответа 2

Если использовать этот дизайнер, то получается (извините) говнокод, который очень трудно развивать и дополнять.

Молодой человек, пожалуйста, усвойте себе раз и навсегда одну простую истину. Технология, это всегда прежде всего инструмент в руках разработчика. И какой код получится в результате её использования зависит не столько от неё самой, сколько от профессионализма того, кто её применяет.

Можно на Delphi написать код высокого качества, а можно и на Java сотворить такое, что без слёз не взглянешь.

Если говорить об устаревании, то как писал один мой коллега, если вокруг той или иной технологии больше нет ажиотажа (который в большинстве своём имеет лишь маркетинговую составляющую), это ещё не значит, что она устарела.

Те же Windows Forms до сих пор поддерживаются. На их основе создано множество превосходных решений.

Просто вот так вручную верстать все эти кнопочки, эм, ну занятие не самое веселое откровенно говоря.

Вёрстка вручную занятие не столько «скучное», сколько затратное по времени. А, визуальные редакторы это время очень существенно экономят потому, что выполняют большую часть шаблонной рутинной работы за программиста.

К подобным редакторам пришли, как раз после ручного кодирования GUI под тот же Windows.

А, вообще откройте для себя WPF или web. Благодаря возможности именно ручной вёрстки интерфейса там можно делать поистине невообразимые вещи. Другое дело, что это усложняет процесс разработки, да и такая гибкость не всегда требуется.

Например, многие системные программы вообще не имеют GUI и управляются через консоль.

C#. Windows Forms или WPF? Что выбрать?

TechNOIR
> Разница кардинальная вообще в плане написания кода между WPF и WF?

На WPF можно писать как на WinForms, но лучше пользоваться преимуществами биндигов и MVVM-архитектуры. Так что если писать ХОРОШО — то да, разница будет.

Читайте также:  Baud rate in windows

1 — если смотреть в будущее (вин10) и метить на витрину магазина МС — еще лучше сразу UWP

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

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

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

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

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

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

вот статья от крутого эксперта, первые два пункта как раз вам по теме почитать.. статья ооочень старая, но суть далеко не все «гуру» знают даже сегодня ;))

В чем главное преимущество WPF над WinForms?

WPF программа медленее чем WinForms
Здравствуйте! Такая проблема написал приложение на winforms, которое анализирует точки в окне и.

В чем заключается преимущество языка C# в сравнении с языком C++?
Здравствуйте, уважаемые программисты. Подскажите — в чем заключается преимущество языка C# в.

WPF vs WinForms
Доброго времени суток! Дело обстоит так: Писал программу на WinForms, но из-за тормознуточти.

WinForms + WPF (MDI)
Можно ли в WinForms-окно поместить как MDI Child окно WPF? Можно ли в WPF-окно поместить WinForms.

Основное (от слова основа) преимущество WPF — в том, что для отрисовки графики используется не GDI/GDI+, а DirectX.
Который, во-первых, обеспечивает более высокую скорость отрисовки (во времена GDI сложную графику еще не изобрели), во-вторых, содержит больше штатных средств для реализации сложной графики, особенно трехмерной.
Поэтому в WPF и реализована более навороченная графика, чем в Winforms, это оказалось и разумнее, и проще.
И вам использовать WPF в случае со сложной графикой (трехмерная, с обилием анимаций, эффектов прозрачности) будет разумнее и проще.

Но в других случаях, проще взять Winforms, и ресурсы компа приложения будет кушать меньше, а не больше. И работать соответственно быстрее.

Если в одном приложении в разных местах используется и простая и крутая графика, то его рациональнее делать гибридным. Если простая преобладает, то приложение надо делать под Winforms, а в тех местах, где нужна крутая, через ElementHost подключать WPF.

Векторность — это просто когда есть координата нескольких вершин фигуры (или радиуса и центра, если это окружность, и т.д.) и она отрисовывается заново по этим координатам (а не растягивается по ним уже нарисованное изображение с ущербом для графики).
При этом координаты могут задаваться как относительно левого-верхнего угла контейнера (Winforms), так и, например, относительно центра или краев контейнера (WPF).
Margin при привязке к левому-верхнему углу — это и есть Left-Top-Right-Bottom (отступы от левого-верхнего и правого-нижнего углов) как в Winforms. Только в Winforms, Right и Bottom не настраиваются, а только Width и Height, в WPF же и то и другое для разных видов привязки.

Добавлено через 5 минут
Еще одно преимущество WPF: при каких-то ошибках в коде, генерируемом конструктором GUI (форм/окон), и которые конструктор не может исправить сам, можно исправить вручную в XAMLе, который всегда на виду.
В Winforms такой код все равно есть и ошибки в нем порой бывают, но он спрятан в ***.Designer.cs, что неудобно.

Читайте также:  Mac os lion skins

Это только если приложение будет состоять исключительно из UI. Причем WPF использует DirectX, который в свою очередь юзает аппаратное ускорение, а значит в WPF графика будет в разы лучше (без дерганий) и менее натуплять процессор, а задействовать видеоадаптер. Расчет какой-нибудь сложной матрицы или графов будет одинаково не быстро что на WPF, что на Forms.

Что все так зациклились на графике?! Привязка данных: в формах это можно выполнить только на уровне кода, в WPF — на уровне разметки. То есть мы можем использовать патерн MVC.

Само формирование разметки в WPF в разы легче: в тот же ListBox можно засунуть любой другой элемент (по сути перед нами тот же html), на формах с этим вечные пляски.

Ресурсы, стили, шаблоны данных.

P.S. Делать гибриды в приложении вообще не советую. Формы есть смысл использовать только если пишеш на «.NET 2.0», ну или если проект был написан на них рание (не переписывать же рабочее).

Wolfdp, > а значит в WPF графика будет в разы лучше (без дерганий)
Что все так зациклились на графике. )))))
Или свистоперделки — нынче единственный способ выделиться среди конкурентов, а ля макияж у девушки легкого поведения?

> а задействовать видеоадаптер
А если он слабый?
Покупая комп для работы с БД (не фотошопом) в мелкой конторе какой-нить, думают о ЦП и ОЗУ, а не видеоадаптере. Ибо видеоадаптер для работы с БД не нужен. А одного неадекватного товарища, зацикленного на WPF, чьи свистоперделки для работы нафиг не нужны, можно просто послать куда подальше и найти нормального программиста, вместо того чтоб на хороший видеоадаптер тратиться.

> То есть мы можем использовать патерн MVC.
Что такое MVC? Что такое паттерн? Сколько разных программ писал, на скольких ЯП, под сколько платформ — и хоть раз пригодилось хотя бы погуглить что это такое.

> Формы есть смысл использовать только если пишеш на «.NET 2.0»
Ну так-то господин «Оппа Казахстан» написал, что WPF далеко не всегда лучше Winforms.

Создайте проект с 1 пустой формой без рамки в виде ромба на Winforms и такой же проект на WPF. Реализуйте растягивание окна в обоих случаях. И тексбокс на каждом окне разместите, чтобы вместе с окном растягивался. И сравните, что растягиваться быстрее будет и что ОЗУ меньше кушать будет. Сами убедитесь, что простая графика быстрее рисуется GDI, чем GDI+ и DirectX.

Но каждый кулик свое болото хвалит. Ежели бывать на нескольких болотах сразу для него непосильный труд )))

Почему все пишут приложения на WinForms если WPF лучше? [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах.

Закрыт 3 года назад .

Очень часто на этом форуме встречаются вопросы которые начинаются таким образом

Я лично пробовал писать на Win Form и на WPF, и, как мне показалось, WPF более точный, более красивый в плане дизайна UI элементов. К тому же, в комплекте в WPF идёт замечательнейший язык Xaml, с которым работать намного легче чем с C# кодом внутри WinForms.

В связи с этим и задаюсь вопросом: какие преимущества есть у Win Form перед WPF и почему многие пишут на Win Form, хотя у них устарелый дизайн и они не поддерживаются?

4 ответа 4

У WPF и правда масса преимуществ перед WinForms. Особенно серьёзным преимуществом я бы назвал понятие привязки ( Binding ) и DataContext , которые радикально облегчают написание правильно структурированных программ, в которых представление отделено от модели, бизнес-логики и контента.

(Не то, чтобы на WinForms невозможно было писать правильно, это намного сложнее, и требует ручной работы.)

Но следствием этого и обратной стороной является гораздо более высокая сложность WPF как фреймворка, намного более высокий порог вхождения в WPF и в правильные методики программирования на нём. Ведь сила WPF проявляется именно когда вы начинаете отделять контент от представления, без этого он ненамного лучше WinForms.

Читайте также:  Linux действие по времени

Тем, у кого есть опыт программирования на MFC или похожих UI-фреймворках, намного легче перейти на практически аналогичный WinForms, чем учить новые (хотя бы и более удобные и продуктивные) концепции, которые помогают лёгкому, удобному программированию на WPF.

Думаю, именно это является основной причиной того, что WinForms всё ещё существует.

Не знаю как другие, но лично я не помню тот момент когда последний раз использовал WinForms, если десктоп — лишь только WPF и как бы высокопарно это не звучало, в этой среде он до сих пор впереди планеты всей. При этом не важно, это кровавый enterprise или приложение с «бабочками и цветочками».

  • Декларативное программирование, web подобная модель компоновки.
  • Независимость от разрешающей способности, аппаратное ускорение, поддержка мультисенсорного ввода.
  • Стили, триггеры, шаблоны, анимация, аудио и видео, команды, мощная система привязки, маршрутизируемые события.
  • Продвинутые возможности для рисования.
  • Приложения со страничной организацией.

и куча всего. Кроме того идеи, принципы и философия, которые положены в основу данной технологии, мне очень импонируют, близки и симпатичны. При этом я не являюсь каким-то ярым противником WinForms или фанатиком WPF, но просто если на секунду вдуматься и поразмыслить чего бы стоило сделать на «формах» то что в WPF реализуется минут за 5 или 10, невольно понимаешь всю мощь и те возможности, которые эта технология предоставляет.

При этом как все мирское, WPF не идеальна и не лишена недостатков, но просто плюсов все-равно больше и это факт.

Скорее всего, это новички, которые только начинают учить .NET. Естественно, они начинают с более простой в изучении WinForms. И им не важно, что там что-то устарело, не поддерживается и т. д. Их цель — научиться писать программы.

По поводу устарелого дизайна, я вас не понял.

По поводу поддержки Win Forms мне кажется она никуда не делась, в этом можно убедиться почитав новости про Visual Studio 2017 и .net 4.7.

Лично мои наблюдения:

WPF говорит от потрясающем быстродействии в отрисовке элементов на экране благодаря работе на DirectX. У меня комп прекрасен всем — и CPU и GPU, но, по факту, отрисовка на экране у Win Forms гораздо быстрее (GDI тоже на месте не стоит).

Контрол DataGrid на WPF крайне сырой(по крайней мере пару лет назад был). Это самый важный контрол для представления данных вообще. Он должен быть очень универсальным, именно такой он в Win Forms, но не в WPF. Для виртуализации данных в DataGrid (WPF) можно использовать только виртуализацию самого источника данных через DataSource.

В Win Forms с DataGridView можно делать буквально все, что только угодно благодаря старому доброму механизму событий(CellVlueNeeded и CellValueFormating), причем очень просто (ну и DataSource тоже на месте).

Кстати, может кто то подскажет, появился способ в DataGrid поставить програмно фокус в строку номер N не прибегая к коду в 30 строк с применением рефлексии?

На мой скромный взгляд WPF хорош для приложений где летающие и пархающие кнопочки в виде звездочек важнее всего остального.

Для бизнес-приложений важно как раз все остальное, эти приложения люди используют долгое время, по многу часов в день. Функционал их сложен и, как правило, нестандартен. Поэтому их интерфейс должен быть максимально функциональным и не оттягивать внимание на самого себя. Человек не должен уставать от пестрого и мультяшного интерфейса.

В пользу WPF скажу только, что сам принцип построения интерфейса в нем очень интересен тем, что похож на таковой в интернет-страницах. Это очень интересно, но пока сыро (до сих пор! Когда был впервые представлен WPF!?). И да, я не обожаю XAML.

Оцените статью