Windows Forms は使えなすぎ! WPF のほうがいい
◆ バグが多くて放置されてるのは致命的だと思う
◆ Windows Forms 使うのは 昔の IE 使うようなもの
◆ バグ修正してる自作コントロールがいっぱいな人ならともかく新しく始める人が Windows Forms 使う理由はないと言っていいと思う
◆ 最近の WPF, Windows 8 ストアアプリ, UPW などは全部 XAML を使ってる
◆ Windows Forms は使えないからデザインが大変
◆ 凄くシンプルで固定なデザインでもないと Windows Forms の利点がない
◆ HTML, CSS, JavaScript の知識ある人は XAML の難易度がかなり下がる
◆ 使ってみると意外と簡単と感じるはず (高度なことをしようとしなければ)
◆ Windows Forms 使うのは 昔の IE 使うようなもの
◆ バグ修正してる自作コントロールがいっぱいな人ならともかく新しく始める人が Windows Forms 使う理由はないと言っていいと思う
◆ 最近の WPF, Windows 8 ストアアプリ, UPW などは全部 XAML を使ってる
◆ Windows Forms は使えないからデザインが大変
◆ 凄くシンプルで固定なデザインでもないと Windows Forms の利点がない
◆ HTML, CSS, JavaScript の知識ある人は XAML の難易度がかなり下がる
◆ 使ってみると意外と簡単と感じるはず (高度なことをしようとしなければ)
Windows Forms を使ってみたら
少し前に Electron と C# で簡単な何か作って比べてみようかな という思いつきのために Windows Forms と WPF 辺りをかるーくイジってましたWindows Forms は昔からあるもので パワポのようにオブジェクトを好きなところに配置して コードでそれの値を書き換えたり動かしたり消したり追加したりするもので 単純です
直感的に扱えると思います
WPF は新しいもので(といっても 5 年以上は前にできたはず) xaml という XML ベースなもので UI のデザイン部分を作ります
データ駆動?とかいう仕組みで MVVM とかいう考え方つかってたり…… で初心者からすると入りづらいものです
そんなわけで Windows Forms でいっか と Windows Forms を選んだのでした
その後すごく後悔することも知らずに……
問題は
はっきり言って問題点は バグ です機能がない とかは WPF とそこまで変わらないですし 自分で作っていくものだと思います
機能は少なめ 必要な物を自分で作る というスタイルな JavaScript (最近はそうでもない) ユーザからするとそこまで困るものでもないです
むしろ多すぎるくらい
ですが 用意されているのに バグで動かないのは困ります
しかもそれのせいでかなり時間取られて調べてみるとバグ しかも放置されていて改善される余地なし だとイライラがたまりますしやる気をなくします
Windows Forms が悪くて C# 自体は悪くないのに C# 自体の印象が悪くなりました
実際マイクロソフトがここ数年出してるソフトって全部 WPF スタイルの特徴的なデザインのものだと思います
VisualStudio も Office も ICE も Skype? も
それに Windows 8 からあるタッチ向けなストアアプリも XAML と C# で作るようです
正確には WPF ではないらしいですが XAML 使ってる辺り WPF よりだと思います
なにがあると WPF なのかよくわからなくなってきましたが マイクロソフト的にも Windows Forms は終わったもので一応サポートも続けている程度に感じられると思います
ただサポートがあるといっても昔の IE みたいなものと言っていいと思います
最低限のセキュリティ修正はあると思います
ですが 新機能は追加されずやセキュリティに関係ないバグは放置です
調べてみても最近になって 新コントロールができたという情報は見当たらなかったです
それに現実問題として ググると何年も前からバグとして報告が上がっているものが 2016 年にもなって直ってないのがほとんどです
ものによっては報告がもう 10 年くらい前になるものもありました
特殊な使い方をして稀に当たる頻度ならまだいいのですが 今回は簡単によくみるような UI を作ろうとして複数のバグに当たるくらいに普通に問題となるものです
Windows Forms を選ぶことは今 IE の 6 や 7 向けになにか作ろうというのと同じようなものと考えたほうが良いと思います
対策
とはいってもまだ WindowsForms で作る人はいますし 情報が多いのも確かです私が感じた範囲ではバグのほとんどはコントロールです
さすがにフレームワーク全体に影響あるようなものは修正されているんでしょう
となれば そのコントロールを継承して対処したユーザコントロールを作ればどうにかなります
バグ報告のある海外の掲示版では対策も書いてくれているのが多いので対処できるものが多いです
対処方法が書かれていないものは 原因がわかりそうなら自分でなんとかして 無理そうならそのコントロール使うデザインを諦めます
margin や padding などサイズ関係とリサイズ時の問題が多い気がするので 使い方を変えて回避できそうなものもあります
ググっていても Windows Forms がダメだと言ってる人は多くて自作でコントロール作ってる上級者な人も多いようです
Windows Forms は昔からある分 長く使ってる人は自分でバグ対策してしまっていて その対策済みを使い回すから困ること無く使い続けられるのでしょうね
特に大きい会社なんかは .NET Framework をラップした独自のフレームワークレベルになってそうです
そういうノウハウがある人ならともかく新規にはじめようという人は Windows Forms は基本避けたほうがいいと思います
デザイナ
バグの一つであって バグじゃない仕様でも不便なところがあるデザイナこれのせいで多くの制限がかかります
かといってコンパイル言語なので HTML みたいにちょっと修正 リロード を繰り返したり Chrome 上で修正してしまって見た目と同時にソースも修正という便利さはないです
その Chrome に当たるのがデザイナなのですが 制限が多くて使わなくて済むなら使わないほうが楽なレベルにやっかいです
継承したとか ジェネリックが入ってたりとかそれくらいで表示できなくなったり コンストラクタに何か書くとエラーが出たりと使っていてストレスがたまる一方です
さらにときどきよくわからないエラーで表示できないときもあったり
そんな時はバグの可能性が高く 開いてるデザイナのタブを閉じてリビルドしてもう一度開いたら直ってることが多いです
デザイナ周りは自分のミスだろうと色々コード見直すより バグじゃないのとググッてみたほうが早いかもしれません
そんなデザイナですが WPF では XAML という XML ベースなもので書くことが多いので デザイナのよくわからない動きに悩まされることも減ります
デザイナ側を操作したらわかりやすい XAML が出力されますし XAML を直接書いて表示だけデザイナで確認するのでもいいです
Windows Forms では デザイナが出力するコードの最中に自分で書いたコードを入れたくても再生成の都合で消えてしまうのでデザイナのコードの中に混ざっていてほしい初期化コードが別のところにあって浮いているという気持ち悪いことも減ります
また XAML をかけたりバグなど扱いづらいのが減っただけでなくて ベクタグラフィックスを扱うソフトのように目のアイコンでオブジェクトを非表示にしたり鍵アイコンでうごかせないようロックしたりという機能を簡単に使えるようになってます
Windows Forms だとなかったと思います
あっても気づいてないくらいのでわかりやすく使いやすいものではないと思います
一応 WPF でもデザイナにバグはあるらしいですが使ってみたところ Windows Forms と比べるとほぼ問題が起きずに使えてます
WPF
デザイン
じゃあ WPF にしようといっても上で書いたように初心者的にはハードルが高く見えますですが 意外と楽に使えます
データバインディングとか MVVM とかそういうのは慣れてきてから使えばいいんです
初心者なら Windows Forms と同じようにコントロール並べてそれぞれのオブジェクトをコードから操作すればいいんです
それで特に困らないですし もっと高度なことしたいなと思ったり デザインとロジックわけたいなと思ったりそんな余裕が出てきてからやればいいんです
レイアウト部分を XAML にするだけで自由度が上がりますし 書きやすさも大幅にあっぷです
動的に色々レイアウトを変える Web ページ風なものもお手軽です
なによりバグに悩まされることが減るので精神的負担が減ります
XAML ですが HTML と JavaScript でなにか作ったことがあるなら難しいと思わなくて大丈夫です
HTML と CSS に書くことを XAML にするだけです
div みたいな感じで コントロール名を書いて属性に Width とか Height とか Margin とか Padding とか HorizontalAlignment とか レイアウトに関する情報を書きます
CSS を使わず全部 style タグで書いてる感じがして気持ち悪くもありますが こういうものです
イベントも Click="on_click" という感じで定義します on_click は関数名になります
onclick="fn();" ……
HTML 内に JavaScript 書いてるようで見ていて気分が悪くなりますが 我慢です
これは HTML に似ていますが HTML じゃないんです
タグにイベント時の関数書いてもいいんです
HTML 的に気持ち悪くても やっていることはわかりますよね
パネルとかコンテンツとか もうちょっと複雑なものがありますが 最初はデザイナの方で適当にコントロール配置して XAML を見てこう書けばいいんだー くらいに使ってると自然とわかってくると思います
デザイン的には CSS な感じで考えたのと近いはず
position 付きの要素や flexbox の知識があったほうがわかりやすいかもしれません
CSS がないので このパネルの要素全部に同じスタイル当てないのに全部に繰り返し書かないといけないのって思いますが XML 形式でスタイルを表現するものもあるようです
この辺りは軽く見ただけなので 私もよくわかってません
コード
XAML で書いて設置したコントロールは Windows Forms と同じように this.listView のような感じでプロパティとして存在しますthis.label.Content = "らべる";
でラベルのテキストを設定できます
こんな感じで Windows Forms と同じ感じで使えます
ただ プロパティ名や構造は同じ名前でも基本的には違っているので Windows Forms 使っていた人が移行するときに XAML だけ書いて コントロールのオブジェクト名を合わせればそれだけで動くというわけじゃないです
UWP
ただこれから新しくするなら UWP という新しい物がいいのかもしれないです私も使ったことないです
Windows 10 からの新しいもので 開発にも Windows 10 がいるとか
WPF と同じく XAML を使うようです
また Windows 8 のストアアプリに近いもので ストアからしかインストールできないようですが クロスプラットフォームで使えるようです
モバイルでも Xbox でも動くらしいです
それに対して Windows Forms や WPF はデスクトップ向け Windows だけです
モバイルでもというところなので Windows 8 アプリみたいに デスクトップだとほとんど使わないものなのか WPF みたいにメインなソフトを作るのにも使われるのかがわかりませんが Windows 8 のストアアプリみたいにすぐになかったものにはならないんじゃないかと思います
新しい選択肢が増えるわけですが WPF 以降はどれも XAML が使われてるようですし XAML を使わない Windows Forms は特別な理由がない限り使う必要ないと思います
COMMENT
コメント一覧 (40)
-
- 2016/09/21 19:14
- UPW ではなく、UWP ですよ
-
- 2016/09/22 12:09
-
ほんとうですね
修正しました
おしえていただきありがとうございます
-
- 2017/04/21 15:56
-
色々参考になります。
ありがとうございます。
-
- 2017/05/13 12:08
- WPFで複雑な事をするとVisualStudio自体が落ちる事が多々ありますが、WPFってFormよりバグが多そうです。
-
- 2017/05/13 13:36
-
VisualStudio自体が落ちる原因がプラグインによるものでした。
WPFはまだまだ素人ですが、Form世代よりリッチな表現ができるのがいいですね。
-
- 2017/05/30 20:28
- バグの面だけ言えばWPFの方が多いです。初心者で使い方がわかっていないのでバグに見えただけでは?
-
- 2017/05/30 22:44
-
そうでしょうか
どちらも適度に使ったのですが WinForms ではコントロール系にバグがありすぎて
単純なアプリを作るだけでも苦労しましたが WPF では全くないわけではありませんが
困ることはほとんどありませんでした
バグの判断基準は私見ではなく stackoverflow や ms のコミュニティで昔からあるバグです
と書かれていたものなのでバグには違いないと思います
-
- 2017/06/08 08:42
- 大抵の場合自分のスキルのなさを人のせいにするんだよな
-
- 2017/06/08 21:49
-
スキルあるなし問わずバグが多く放置なものを使いたくはないですね
どんなバグだらけのものであろうとやりたいことを実現出来るスキルがあるのだとすれば すごいとは思いますがそこにがんばるより もっと使いやすいものを選ぶという選択をしたいです
WinForms 使いたい人が使うことを否定する気はありませんので
あなたが WinForms のほうが優れてると思うのなら使えばいいと思います
-
- 2017/08/19 22:58
-
文字比較仕様が変だ!バグだ!
→包摂基準(総務省)知らないだけ
少数丸めが四捨五入じゃねえ!バグだ!
→IEEE知らないだけ&指定方法知らないだけ
みたいな痛い人がほぼ大半だから、バグと騒いでてもまるで信用してませんけどね。
まあ、新規はWPFというのは同意です。
ただし、
・グリッド(コッチは暫定)
・WIN32API
この二つが必要にならないように出来るなら、ですかね。
グリッドは大量データ使わなければ構わないけど、使いたがるとこは基本大量データ貼りたがるw
-
- 2017/09/06 15:13
-
確かにWinFormsは古いと思う
でもWinFormsよりWPFに関する情報がまだ少ないから敷居が高く感じます
-
- 2017/09/20 21:51
-
> 文字比較仕様が変だ!バグだ!
> →包摂基準(総務省)知らないだけ
> 少数丸めが四捨五入じゃねえ!バグだ!
> →IEEE知らないだけ&指定方法知らないだけ
このあたりはよくあるやつですね
Chrome の JavaScript みたいに float 部分で誤差があれば表示したときに 0.30...4 のように表示してくれればいいのですが 言語によってはダンプやデバッグツールでみても全く同じ表示になっていて == は false になるのでこの不親切さでハマった覚えがあります
ですが ソフトウェアのバグ自体はそんなに珍しいものではないと思います
一日中プログラム書いてるような生活をしてれば 探そうとしなくても週に 1 つ程度は何かのバグが見つかると思います(私の経験的に)
まあ 9 割以上が誰かがすでに見つけていて issue があるのですけどね
記事内でバグを挙げておけばよかったのですが WinForms の場合は週に 1 つというレベルを遥かに超えていて (使い始めなので慣れてれば誰でも知ってるレベルのも含まれるからかも) 最初はひとつひとつメモっていたのですが 途中でもう知らないっとメモを投げ捨てるほどでした
なのでバグの例は書いてないです
というかそういうことがあったので勢いだけで書いた愚痴記事です
それなのにこのブログの中で閲覧数が上位になっていて驚いてます
> ・グリッド(コッチは暫定)
これは私も思いました
パフォーマンス面で数千数万のデータを表示するとなると WPF はちょっと遅すぎるので ここだけは WinForms のほうが優れてると思います
> ・WIN32API
ウィンドウのスタイルを変えるとかはないですが FileDialog みたいのならけっこう WPF 中で使ってますね
-
- 2017/09/20 21:54
-
> 確かにWinFormsは古いと思う
> でもWinFormsよりWPFに関する情報がまだ少ないから敷居が高く感じます
それもありますよね
使ってる人が少ないので情報も少なめ
これからまだまだ良くなって人が増えるのかと思いきや、 Microsoft はもう Win10 用の UWP の方に力を入れているみたい
セキュアにするため UWP のストアからしかアプリを入れられない Windows エディションを作るみたいな話題も耳にしました
なので 今後 WPF が大幅進化して WPF ユーザも増える なんていうのは想像できないです
情報が増える期待もあんまりできないですね
-
- 2017/11/06 22:59
-
未だにWPFからのC#入門書が少ないのが現状なのでしょうか
WPF(XMAL)入門サイトや入門書を見ると必ず、一番初めにBindingの話が出てきます(当たり前ですが)
Bindingしなくてもコードからtextblockの内容変えれるのに...
私のようなWinForm道場出身者からすると「レベル高けー」と言うしかないですね
どのサイトよりもわかりやすくてでおもしろいです!
-
- 2017/11/12 17:38
-
Windows Formって元々VBから来てるんじゃない?
ちょっとボタン配置した簡単なアプリくらいしか作りづらい。
旧VCとかでも同じような画面はあったけど、
基本的に全部コードで書いたから、
レイアウトがXAMLになったWPFは使いやすくて作りやすかった。
理にかなってるしね。
Androidとか似たような考え方だし、
Windows FormってVBからの移行のために昔のやり方を引きずってるだけだと思う。
-
- 2017/11/15 00:24
-
そういえば WinForms のアプリでメインのクラスを VB の名前空間のクラスを継承して作っているのをみたことがあります
C# なのにどうして VB の継承してるんだろうと疑問に思ったのですが WinForms 自体が VB からと考えればなっとくです
単純に GUI でボタンをぺたぺた並べて貼り付けて簡単なアプリ作るのにはいいのですが全画面やウィンドウサイズ変更などに合わせてレスポンシブにレイアウト調整となるとすごく大変ですからね
アンカーじゃ限界ありますし デフォルトコントロールだと配置やマージン関係にバグが多くて単純なことですら……
web のHTML もそうですし最近は XML 系の構造定義+スタイル定義 がほとんどの GUI の作り方になっててありがたい限りです
-
- 2017/11/15 00:41
-
14. ななしさん
Binding は入力値見るときに View のコントロール触らなくて良かったり Grid 関係ではオブジェクトのリストを関連付けるだけで良かったりといいところも多いですが 慣れるまでが大変ですからね
Binding 目当てで使う人ならともかく WinForms の GUI の作り方が嫌で XAML 使いたいってくらいの人には最初の難関だと思います
Binding は必須というわけでもないので XAML 使いたいだけなら View を XAML に置き換えるだけで直接コントロールのプロパティ書き換えも十分アリですよね
今でも 1 画面のみで機能もちょっとしたものだと ViewModel とか作らないで直接コントロールの値参照する作りだったりします
-
- 2018/04/26 12:06
-
一通り読んであげたけど、なんだか頭悪そうな文章だなぁと思いました。
あなたじゃWinFormsだろうがWPFだろうが、何使おうがたいしたモノは作れそうにないですね。
たいしてモノを知らないくせにこういう記事を書くのは、WinForms使ってる人に失礼ですよ
-
- 2018/04/26 18:53
-
無理して読んでくれなくてもかまいませんよ
わざわざこんなコメント残す人はもっとたいしたことないでしょう
以降コメント頂いても読んであげられないと思いますので、コメントはけっこうです
-
- 2018/05/14 19:46
-
少なくとも、vsは、wpfになってから
遅いし、バグ多いし使いづらくなった。
これが真実だよ。
-
- 2018/05/15 22:15
-
遅くなったのは同意ですが バグについては私は WinForms のほうが多く感じます
さすがに .NETFramework ほどの規模ですべての機能のすべてのバグを把握できてる人はいないと思いますし バグの多さは使う人がどの機能をどう使うかで感じ方が変わると思います
私はどちらもシンプルなものだけであまり高度な使い方はしてません
その限りでは WPF ではほぼバグと感じるものはなく WinForms ではけっこう頻繁にであいました
-
- 2018/05/25 17:16
-
バグが多いと言いますが、実体験として
作っててバグで困ったという経験はあまりありません。
他の方が、技術的に未熟なだけじゃ…と疑いたくなるのもわかります。
ホントにバグとしてあったとしても、クリティカルなものであれば
ある程度歴史のあるC#なりVB.netなりは、修正されていると思います。
もしそれでも、バグが多いというのであれば具体的な事例をいくつか挙げるべきかなと思います。
それを他の人が見て「確かにバグだね」というのか、「それはバグじゃねぇーよ」というかはわかりませんが。
ただ、バグが多いを連呼しても説得力がないですね。
-
- 2018/05/25 23:44
-
> 具体的な事例をいくつか挙げるべきかなと思います。
それはおっしゃるとおりだと思うのですけど 別コメで書いたように使ってて溜まったストレス発散的な記事であって具体的な問題点の紹介を目的としてるわけでもなければ バグであるかを判定してもらいたいというわけでもありません
あくまで個人ブログであって公的なものでもないので 具体的なものを出さずに書くなと言われても応えられません
信じる信じないは個人に任せてそう感じてる人もいるんだーくらいに流してくれればと思います
> クリティカルなもの
クリティカルかどうかで言えば違うと思います
あくまでコントロール周りのレイアウトやデザイナです
デザイナは有料(今は無料?)のより高度なツールがあったと思いますしコントロールは最悪 1 から自作すれば代替可能です
本格的に使う人は有料や無料のライブラリのコントロールを使ってるらしく そういったものではコントロールのバグは修正されているので デフォルトコントロールだけでどうこうしようとしなければあまり影響はないかと思います
バグと判断した理由はすでに書いたかもしれませんがドキュメントにある仕様通りであればそうは動かないはずのものであり MS のフォーラムや Stackoverflow 等でバグであると書かれてあり それに反論がなく それなりの評価をもらっているものです
単純にどういうものがあるのか興味があるなら その辺りで調べてみてください
もうけっこう前のものなので私自身 具体的に何があったかをはっきり覚えてないので……
-
- 2018/11/03 10:08
- 多分使い方がわからないからバグ呼ばわりしてるだけだと思う その手の質問よく受けるけどだいたいAnchor使ってないからそれ使えばすぐ解決することが多い
-
- 2018/11/07 19:46
- 個人的には、生産性(開発効率)の高さと求められるスキルレベルの低さ、可読性には、WinFormsに軍配が上がると思ってます。UIで凝った作りをしたい場合やマルチデバイスの場合のみ、WPFやUWPが選択肢になるのかなと思ってます。因みに小生はバグで困った事はありません。
-
- 2018/12/18 15:19
-
ユーザーに依ってはリッチな表現も不要だし細かなコンポーネントのバグも影響が無い。
そうなると、簡単に使えるWinFormsの方に軍配が上がる。
というか、WPFは色々出来そうだけど簡単なレイアウトを簡単に作れない。
産業用のリッチである必要のないアプリではこの辺が問題。というか面倒。
何か色々出来そうなんだけどなぁ…と思いつつWinFormsでさっさと仕上げる毎日。
-
- 2018/12/20 17:16
-
偶然とはいえ、こんな昔の記事を見つけてしまうなんて
さらに突っ込まざるを得ない自分が憎たらしい
今となっては、.netFramework自体が産廃となりつつある
WinFormsもWPFも死亡待ち中
MSとしては、Win7/8.1のサポート終了待ちをしてて、Win10のみになったら
UWP/Xamarin/Unityのみで行くだろうね
.netFrameworkも.netCoreに食われて消える予定だし
何が問題かってWinFormsで作られている業務ソフトが多すぎること
かつてのVB6マイグレーションと同じ事がWinFormsでも起こる予定になってること
今日もイベント駆動プログラムしかしらない元VB6プログラマーに
MVVMの基礎を説かないといけないのが憂鬱
-
- 2019/01/10 16:40
-
.NETCodeではWinFormsもWPFもサポート決定。
まだまだWinForms使えるね。
というか他が使えなさすぎ。
タスクトレイ常駐アプリをWPFで作ろうとすると面倒すぎてやる気にならん。
-
- 2019/01/15 22:27
-
個人ブログの古い投稿に書くのもなんだけど・・・
> 敷居が高い
辞書で調べましょう
今もお仕事でWindowsForms使ってますけど、業務ロジックとUIロジックが混在してバグだらけになっててすごい面倒
正直WPFだったら解決してるのにってのが多くて
TreeView+DataGridViewなコントロールのデータは自力で1行ずつAddしてるし、選択行から情報を取得するのにTagに色々なデータをぶち込んでてそれ以降はTagのデータを使う形で元のリストデータは使わない、そのせいでデータがばらばらに散ってて訳が分からない構造になってる
こういうところをWPFでデータバインドしてればかなり解決するんだけどねぇと正直辛い
-
- 2019/03/27 13:49
-
んーなんだろ。バグが多いバグが多いって連呼してるけど、具体的に何のこと言ってるんだろ。
仕事でform使っててそんなにバグで困ったことないけどなー。本当に使ったことあるのだろうか。
ただ、管理人もストレス発散記事だと言ってるので、そんなに信用度の高い情報ではないのでしょう。
-
- 2019/04/27 07:52
-
デスクトップアプリは現状WPF一択。
.NET Core 3&WPFで将来も明るい。
UWPはモバイルが死んだ今、存在意義がない。
制限を緩和したりデスクトップに寄せてきているけど、まだまだWPFには及ばない。
WinFormsの人もWPFに移行した方がよい。
「バインディングを使わねばならないのである」
「MVVMで開発せねばならないのである」
なんて馬鹿の発言に怯えてしり込みしているのかもしれないけれど、
バインディングも使わず、コードビハインドに全部コード書いてもいい。
それでもWPFに移行するメリットはある。
コードを一行も書かずに画面サイズ変更に柔軟に対応できるレイアウト作成はWinFormsにはできない。
まずは脱WinForms!
-
- 2019/06/25 22:42
-
winformのバグのほとんどは、win32apiのバグ。
windowsのバージョンが上がるたびにバグが増えたり、減ったりしてる。
データバインドしないからバグるわけじゃないし、UIとロジックが分離してないからバグるわけでもない。
-
- 2019/08/13 23:09
- データバインドって、言うほど便利じゃなくないですか?個人開発ならいいけど、チーム開発だと可読性悪い気がしますが。。。
-
- 2019/08/31 19:19
- 19の怒った管理人さんも可愛いです。
-
- 2019/12/29 08:19
-
Windows Forms使うのがギリギリ許せるケースは、個人で画面1つだけの小さな使い捨てアプリを作るときぐらい。
それ以外の全てのケースはWPFを第一候補で検討したほうが良い。
高DPI, レスポンシブレイアウトが当たり前の今の時代、Windows Formsで作るのは苦行すぎる。
複数人で開発するとき、画面をほんの少し修正しただけでDesignerファイルがあっちこっちぐっちゃぐちゃに書き換えられるWindows Formsは修正差分がまともにとれない。
Windows FormsからただWPFに変えるだけでも、本来しなくていい無駄な作業が減る。
データバインドも必要性を感じたら使えばいい。WPFだから使わなきゃいけないわけじゃない。
総じてWindows Formsは開発生産性が低い、修正時の工数も多くなる、結果、品質が悪い。
-
- 2020/04/19 15:46
-
WPFはWindows専用だから
Monoでも使えるWinFormsやAvaloniaUIの方が良いような…
-
- 2021/06/13 22:32
-
こんな古い記事にコメントするのも悪いし管理人さんもだいぶ叩かれてるけど、たまたまこの記事が引っかかってしまい誤った認識を植え付けられてしまう哀れなエンジニアが減る事を願ってコメントします。
winfirmsは枯れたフレームワークなのでバグらしいバグはありません。
.Netのアップデートでバグが出た場合はMicrosoftがちゃんとサポートしてくれます。
管理人さんがバグだと思った事象やStackOverflowなどでバグだと騒いでいる事象は99%仕様動作です。
自分がやりたい事をフレームワークがサポートしてない、思ってた動作をしないからといってバグと言ってはいけません。
まずはよくMSDNを読みましょう。
WPFとFormのどっちが良いかは作るアプリによりけりなので是非は難しいですが、オープンソースで公開されてるパッケージはForm向けのものの方が多いのでnuget探せばだいたいのものが揃うのがFormの優位性ですね。
-
- 2021/06/14 00:35
-
>>37
自分で必要な検証もせず 個人ブログの書き込みを鵜呑みにしていたら どの言語・ライブラリもどこかでディスられているわけで何も使えなくなりますし 気にするほどでもないと思いますよ
仕様と言うなら別に構いませんが 現実としてこう動くと期待されるものがそう動かないわけです
開発者からしては仕様であってもユーザからすればバグです
仕様だろうがバグだろうが 「WinForms は使えない」 のであって この認識は今も変わりません
.NET Core や .NET を経て大きく改善してくれることを期待したのですけどね
ASP.NET は多少大きめな変更があったみたいなこと聞きましたし
昔のことなのであまり詳しくは覚えてませんが 問題が起きたのはレイアウト系で WPF やウェブのようなレスポンシブだったり 柔軟性のある見た目にして作っていたときです
昔ながらのいかにもな Windows アプリの外観(コントロール単純に並べたくらい)であれば大きな問題はなかったと思います
WinForms がそういうものを作ることを想定していないから 使うものが間違ってると言われればそうかも知れません
困ったことがないという人が多いのも メジャーな使い方から外れてるからだとは思ってます
なのでどちらが良いかはアプリによるというのは私も同意です
TextBox を 2 つおいて片方の入力を変換した結果をもう片方に入れる くらいのシンプルなものなら私でも WinForms にするでしょうし
当時は外部パッケージを使わず 標準ライブラリのみという制約があった上での評価なので Nuget を使うなら WinForms でも使える部分が増えてくると思います
以前別件で 外部パッケージありのものを使ったときは 標準コントロールでの問題は発生しないものが多かった記憶がありますし
-
- 2021/10/05 16:46
-
Winformsのデザイナの
> よくわからないエラーで表示できない
には狂おしく同意.
それが「仕様」なのかもしれないけど,
フォームクラスの定義より前の行に何か定義を書いたら死亡するぜ!とかそんなのわかんねぇよ…っていう.
-
- 2022/04/30 14:10
-
microsoftがUWPの開発やめる通達出してますね。
Windows App SDK(未完成)に切り替えて、WinForms、WPF全部使えるようにするってんで、WPFがむしろ重要性増す感じですね。
何がしたかったのかよくわからないですけど、簡単にFluent UI(mica material)が使えるなら嬉しい話。
.NET MAUIのリリースも控えてますし、なんだったらFlutterもWin32が使えるようになるから、選択肢がもっと増えますね!
ってことでもっとみんなXAML使ってリソース増やして♡