ふらっと C#,C♯,C#(初心者用) Part149at TECH
ふらっと C#,C♯,C#(初心者用) Part149 - 暇つぶし2ch1:デフォルトの名無しさん
20/12/16 11:29:35.35 TSvQ057dM.net
!extend:checked:vvvvv:1000:512
次スレを立てる時は↑を2行冒頭に書くこと(1行分は消えて表示されない為)
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
他のスレッドでは書き込めないような低レベルな質問、質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。
内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。
なお、テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスや酔っぱらいレスはやめてください
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。
■前スレ
ふらっと C#,C♯,C#(初心者用) Part148
スレリンク(tech板)
■関連スレ
C#, C♯, C#相談室 Part94
スレリンク(tech板)
■コードを貼る場合は↓を使いましょう。
URLリンク(ideone.com)
URLリンク(dotnetfiddle.net)
■情報源
URLリンク(docs.microsoft.com)
URLリンク(docs.microsoft.com)
URLリンク(docs.microsoft.com)
URLリンク(referencesource.microsoft.com)
・Insider.NET > .NET TIPS - @IT
URLリンク(www.atmarkit.co.jp)
・DOBON.NET .NET Tips
URLリンク(dobon.net)
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

2:デフォルトの名無しさん
20/12/16 11:49:28.32 nNBKgDIo0.net
関連スレ
ふらっと C#,C♯,C#(議論用) [無断転載禁止]©2ch.net
スレリンク(tech板)

3:デフォルトの名無しさん
20/12/22 11:28:16.22 ojlio7fm0.net
HttpClientって使いづらいんだけどなんでWebClientやWebRequestは非推奨でHttpClientが推奨なの?

4:デフォルトの名無しさん
20/12/22 13:06:20.64 T3f18Pq10.net
どう使いづらいの?

5:デフォルトの名無しさん
20/12/22 13:10:35.40 ojlio7fm0.net
>>4
エンコード指定出来ない点とか
別にそれでも問題にはならないけどだったらWebClientで良くない?ってなる

6:デフォルトの名無しさん
20/12/22 14:03:09.42 T3f18Pq10.net
>>5
え、できるでしょ

7:デフォルトの名無しさん
20/12/22 21:14:53.82 GHilppOn0.net
>>6
KWSK

8:デフォルトの名無しさん
20/12/23 09:31:05.35 zdm41kCZ0.net
まず、エンコードってもっと具体的に何のエンコードがはっきりしてくれんと
gzipやdeflat圧縮するcontent-encodingなのか、
chunked転送するcontent-transfer-encodingなのか、
はたまた、文字列送信したくて、その文字列のエンコードなのか..
まぁ、どのみちどれもできそうな気がするが

9:デフォルトの名無しさん
20/12/28 20:57:23.90 iJ3wi52z0.net
すみません 教えてください
CPUの使用率を知るために、
Windows.System.Diagnostics 空間の
SystemCpuUsage class が使えると思うのですが、
SyatemCpuUsage cpuUsage;
result = cpuUsage.GetReport();
とやると、 実行時に systemCpuUsage がnull でした
と怒られ、
SyatemCpuUsage cpuUsage = new SystemCpuUsage();
result = cpuUsage.GetReport();
とすると
SyatemCpuUsage cpuUsageには、引数0を指定するコンストラクターは含まれていません
と怒られます。
Cpuの使用時間を知りたいのですがどのようにすればよいのでしょうか?

10:デフォルトの名無しさん
20/12/28 21:59:41.52 mOtjlN620.net
SystemDiagnosticInfo.GetForCurrentSystemから
CPUの使用時間なら他にはSystem.Diagnostics.PerformanceCounter使うとか

11:デフォルトの名無しさん
20/12/30 08:34:44.60 QqXAyZyG0.net
CPU使用率取得 c#
でコードが出てきたがこれでは動かない?

12:デフォルトの名無しさん
21/01/03 06:53:07.36 s7zZ6b100.net
var x = SomeClass.Create();
if( x?.BooleanProperty ){...}
の上手な書き方ってありますか?
↑はbool?とboolの違いで怒られます
if( x?.BooleanProperty == true ){...}
とかってスマートじゃない気がするんですが

13:デフォルトの名無しさん
21/01/03 08:16:15.77 TwYJ75OS0.net
>>12
nullのときってどう動くん?それ

14:デフォルトの名無しさん
21/01/03 08:44:58.15 /wUWHJa20.net
x.?prop ?? false

15:デフォルトの名無しさん
21/01/03 11:46:24.42 Cv28EBZ70.net
nullとfalse=NGの値が同じだから辛うじて動いてるだけの処理なのか
よくあるOK=0でそれ以外がエラーの処理でやっちゃうとおかしくなるから
そういうの書くのやめたほうがいーんじゃない?的な

16:デフォルトの名無しさん
21/01/03 12:25:34.51 9pfzLSF20.net
bool?の時は素直にtrueやfalseって書いた方が個人的に安心できる
まぁそんなことしなくて済むような構造にするのが一番だけど

17:デフォルトの名無しさん
21/01/03 12:58:09.11 Pz+0E5Uq0.net
>>12は条件が逆のとき
null==falseで入るときあんじゃん?
ウンコちっくじゃん?

18:デフォルトの名無しさん
21/01/03 14:43:03.50 dFTAfdRH0.net
初心者以前に国語力ない奴ばかりでワロタ

19:デフォルトの名無しさん
21/01/03 15:11:01.48 TwYJ75OS0.net
初心者は正しく誘導してやらないとな
間違いなくしなくていい省略をして
言語の機能に飛びついてウンコードを作ろうとしていたのを未然に防いだ
初心者スレはこうでなければ

20:デフォルトの名無しさん
21/01/03 15:44:01.57 FpoyKofE0.net
ifでリテラルや定数を右辺に書くのは素人

21:デフォルトの名無しさん
21/01/03 15:47:35.09 QdF5iATA0.net
仕様も確認せずにバグ作り込むアンポンタンしかおらんのかw
まず>>13への回答次第だろ

22:デフォルトの名無しさん
21/01/03 15:57:39.72 Xn7pfEjF0.net
>>20
いまだにそんなことを言う奴は恥ずかしい

23:デフォルトの名無しさん
21/01/03 16:40:24.21 ZZnWN1rj0.net
>>20
今はミスしてもちゃんと代入になっていると警告してるから気にしないね。

24:デフォルトの名無しさん
21/01/03 17:54:19.93 uWkBjJnT0.net
>>23
むしろ左辺に定数書いてる奴見ると殺しそうになる。

25:デフォルトの名無しさん
21/01/03 18:03:00.86 ZZnWN1rj0.net
>>24
俺はぶん殴ってやりたくなる。

26:デフォルトの名無しさん
21/01/03 18:13:01.03 YmRvWB9v0.net
君たちには先輩方に対する敬意がない

27:デフォルトの名無しさん
21/01/03 18:13:42.18 QdF5iATA0.net
別にそいつに危害を加えたくはない、というか関わりたくない
単に老害って哀しいなって思うだけ

28:デフォルトの名無しさん
21/01/03 18:28:01.16 VMrgEgvna.net
ちなみにヨーダ記法とも言う。

29:デフォルトの名無しさん
21/01/03 18:43:52.72 ZZnWN1rj0.net
ヨーダは好きだがヨーダ記法は嫌いです。

30:デフォルトの名無しさん
21/01/03 19:01:39.19 S0YLbz+qa.net
老害云々以前にC#ではほぼ何の意味もないけど、
CでもC#でも==とすべきところを=と書いちゃったことなんか一度もないな。
普通はそうだよね。

31:デフォルトの名無しさん
21/01/03 19:03:25.97 bRO3e+JVr.net
他の言語触ったあとだと間違えやすいんだよ

32:デフォルトの名無しさん
21/01/03 19:47:28.74 hIXjVHhw0.net
>>20
燃料投下ご苦労さま

33:デフォルトの名無しさん
21/01/03 20:07:34.43 QdF5iATA0.net
今までタイプミスしたことないからこれからもしないと言うのは単なるアホ
ただ昔のコンパイラでは警告でなかったから一定の意味は「あった」けど、未だに言ってるのは単なる老害

34:デフォルトの名無しさん
21/01/03 21:56:54.58 ZZnWN1rj0.net
>>31
C言語を使う前の言語って何だろう?
アセンブラならわかるけど。
必ず引き合いに出ると思う。

35:デフォルトの名無しさん
21/01/03 21:57:31.45 ZZnWN1rj0.net
>>33
同意。

36:デフォルトの名無しさん
21/01/03 22:08:58.55 adFNNdCNa.net
タイプミスてw
普通の人は画面見ながらコーディングするんだけどw
ひょっとすると==と打つつもりで=と打ったことはあるかもしれないが
それを見逃したことなど一度もない。
そもそもタイプミスは-キーのみで発生するわけではないので
理由になるはずがない。
申し訳ないけどこれ、昔も今も「羹に懲りてなますを吹く」以外の何物でもないよ。
そもそも「==の左辺に変数を書かない」などというルールを条件づけしたところで
その条件反射は間違って=を打ったところで発動しないのでは?w
っていうか同じ努力で「等価検査をしたい時は==」を条件づけられるだろうw

37:デフォルトの名無しさん
21/01/03 22:15:19.58 adFNNdCNa.net
こういう糞作法に疑問を感じない人はあれかね
+と打つつもりで*って打っちゃうかもしれないから
-+*/使わずにマクロでadd とかsubtractとか定義して使えって言われたら
納得して従うんかねwwwwwww

38:デフォルトの名無しさん
21/01/03 22:16:18.14 myNdCsmw0.net
>それを見逃したことなど一度もない。
それは「あなたが」でしょ?あなた以外の普通の人が見逃すことがないと断言できるわけはない。

39:デフォルトの名無しさん
21/01/03 22:22:10.37 hZvGxwgh0.net
実際してない証明はできないし無意味な話だよ

40:デフォルトの名無しさん
21/01/03 22:33:09.25 Lewq+os10.net
>>37
それCOBOLERの発想だよなぁw

41:デフォルトの名無しさん
21/01/03 22:50:45.04 TwYJ75OS0.net
VCの頃他の奴がやったときに結構見つけるまで苦労した覚えがあるけど
まあ、そんな頻度のあるバグではないな

42:デフォルトの名無しさん
21/01/03 22:58:13.35 VROyTreA0.net
等価演算子が == 以外の言語を使った事ないなら間違えないのかも

43:デフォルトの名無しさん
21/01/03 23:04:49.04 adFNNdCNa.net
VBA触った後にC系のコード書くとつい....ないってw
くどいようだけど、どっちにしろ条件づけ(条件反射)なので、
同じ条件づけなら直接的な方がいいに決まってるでしょ

44:デフォルトの名無しさん
21/01/03 23:06:47.84 Lewq+os10.net
その手のbugはgimpel の pc Lint で潰していたな
lattice 時代からだから歴史の長いsoftだ

45:デフォルトの名無しさん
21/01/03 23:12:43.97 fsLjg3fja.net
まあエディタ環境もLintも貧弱だった2000年位までならヨーダ記法の採用にも一理はあるかもしれないけど
現代的な環境でC#を書くなら論外だわな
>>38みたいなことを言い出す奴は間違いなく老害かただの難癖野郎なのでプロジェクトに迎え入れちゃいけないし
万一抱えなきゃいけなくなったとしても若手に影響を及ぼすような仕事を与えてはならない

46:デフォルトの名無しさん
21/01/03 23:35:31.66 myNdCsmw0.net
いや、勝手にヨーダ記法を推奨していることにせんでくれる?

47:デフォルトの名無しさん
21/01/04 00:03:18.28 Nz2iXOdN0.net
>>34
Pascal とか Basic だろ

48:デフォルトの名無しさん
21/01/04 00:04:33.12 Nz2iXOdN0.net
>>36
お前がタイプミスを見逃すかどうかなんてどうでもいい
一般的なプログラマーの話だから

49:デフォルトの名無しさん
21/01/04 00:07:02.17 Nz2iXOdN0.net
>>45
> >>38みたいなことを言い出す奴は間違いなく老害かただの難癖野郎なのでプロジェクトに迎え入れちゃいけないし
お前はもう少し文章をちゃんと読む癖をつけたほうがいい
仕様書を勝手な解釈でバグ作り込むタイプだと思うぞw

50:デフォルトの名無しさん
21/01/04 01:00:14.94 jzK8VmUQa.net
日本人は精神論根性論に走りやすいし、そうでなくても
ヒューマンエラーをシステマチックに回避しようという発想自体は悪くない。
ただ、その方法論が有効かどうか評価せずに飛びつくのは愚か。
日本は精神論者も多いけど、こういう教条主義者も負けないぐらい多い。
==の左辺に~なんて全然有効じゃない。

51:デフォルトの名無しさん
21/01/04 01:14:52.17 jzK8VmUQa.net
それを言っちゃあおしまいよな話だけど、
真面目な話==と=を間違えるような人は本質的にプログラミング向いてないんだよw
間違うかそんなの。
ズブの素人でも1週間もコード書いてれば「等価検査は==」って条件づけされるってw
if(までタイプした時点で条件反射が発動するでしょ

52:デフォルトの名無しさん
21/01/04 01:33:02.28 3rgEqS6K0.net
まあ、でも定数値を左辺に書くことはメリットしかないからな
やれと言われればやることではある
ただ、規約にしてしまって
ソース中のやってない箇所を1つ1つチェックまでして直す価値はないと思う
あくまでなるべくそう書いた方がいいかな?レベル

53:デフォルトの名無しさん
21/01/04 01:45:03.22 3rgEqS6K0.net
いくらメリットしかないって言っても規約に昇華されて
チェックまでさせようとする奴がいるとそいつが邪魔
定数値を左辺に書くよりそいつを排除することに力を入れたほうがいい
他にもやることはたくさんある
グローバル変数なくしたり、無意味なメンバ変数削除して引数にしたりと
優先順位が遥かに高いものが他にたくさんあるという前提は忘れてはならない

54:デフォルトの名無しさん
21/01/04 02:08:37.49 +AkCQ/yL0.net
>>51
一時間おきにVBとC#のコーディングやってみなはれ
VBでIf文の条件式をカッコでくくってエラーに悩むとか絶対あるから

55:デフォルトの名無しさん
21/01/04 02:17:25.69 3rgEqS6K0.net
>>54
一時間おきにそんなことするプロジェクト稀だからそういう無意味な反論するなよ
時間の無駄

56:デフォルトの名無しさん
21/01/04 02:20:12.44 +AkCQ/yL0.net
>>55
一般的には稀なのかもしれんがそういうのもある
単純に == と = を間違える奴はプログラミング不向きとか言ってるバカに試してみて欲しい

57:デフォルトの名無しさん
21/01/04 02:22:58.44 6jvKGYBk0.net
>>52
不自然で読みにくい、という十分大きなデメリットがあるよ

58:デフォルトの名無しさん
21/01/04 02:41:40.35 3rgEqS6K0.net
>>56
そんなレアケースの備えいらねーだろ
>>57
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)

59:デフォルトの名無しさん
21/01/04 02:41:41.41 BeeF0dCGa.net
2000年代に入った頃から過剰コンプライアンスが問題視されるようになった
(でも改善はされないのが日本という国だけどw)が、あれとよく似てるね。
入院患者の取り違えが起こっては大変と、毎日何度も何度も氏名生年月日を確認する。
携帯キャリアのサポートに携帯で電話してるのに「お客様のお電話番号を~」
本当に意味あるのかそれw
欧米人は絶対にこんなことしないだろう。
ルールを忘れるからとルールを忘れても問題を起こさないためのルールを覚える。
ここに矛盾を感じない人は論理的思考能力に欠陥がある。
プログラマに向いてないよw

60:デフォルトの名無しさん
21/01/04 06:55:02.30 h9VTRLOg0.net
そんなルールにこだわりたいのならテンプレくらい見てくださいね

61:デフォルトの名無しさん
21/01/04 07:01:35.74 ote7uWYR0.net
マ板でやれや

62:デフォルトの名無しさん
21/01/04 08:49:17.48 v6RCrFsZ0.net
ほら始まったマウント合戦

63:デフォルトの名無しさん
21/01/04 09:37:13.43 OpGFyjtND.net
続きはこちらでどうぞ
スレリンク(tech板)

64:デフォルトの名無しさん
21/01/04 10:27:40.46 Nz2iXOdN0.net
>>54
> VBでIf文の条件式をカッコでくくってエラーに悩む
それエラーにならないよ
単に ( ) で囲った式になるだけだから
言うなら逆に「Cでif文の条件式をカッコでくくらずにエラーに悩む」だろうね
と言うように人は必ず間違いを犯すものだとと思ったほうがいい
あとタイプミスの多寡とプログラマーとしての能力はあまり関係ない
優れたキーパンチャーは必ずしも優れたプログラマーとは限らない

65:デフォルトの名無しさん
21/01/04 12:49:08.68 OA+Odfw/0.net
定数値を左に書くのは20~30年前の流行りで古臭いスタイル

66:デフォルトの名無しさん
21/01/05 15:53:00.06 G7CPq1YD0.net
ユニットテストを身につけたいのですが、公式ドキュメントにあるxUnit、NUnit、MSTestのどれが主流なのですか?
URLリンク(docs.microsoft.com)

67:デフォルトの名無しさん
21/01/05 17:05:19.12 VE6Qai0fM.net
>>66
どれもそれなりに使われているから何とも言えない
というかそもそもドットネットドカタはテスト書かないのが主流なので差が出ないと言うべきか
まあ仕事ならどうせ現場に合わせるんだし、大した違いはないからどれでも好きなの覚えたらいい
個人的にはxUnitが好き

68:デフォルトの名無しさん
21/01/05 17:42:48.70 fFW5I87S0.net
今選ぶならxUnitだろうね

69:デフォルトの名無しさん
21/01/06 15:48:05.04 p+a7utAN0.net
>>65
それってなんなんですかね
switch文みたいにしたかったとかなんですか


70:デフォルトの名無しさん
21/01/06 16:14:14.32 A2mjs7EYa.net
Cにはboolがないから
CのifはただのJZ(jump if zero)、つまり()の中の式の値がゼロかどうか見てるだけ
条件演算子の値は条件不成立時に0になる。1 == 2という式の値は0
a = 1という式の値は1

71:デフォルトの名無しさん
21/01/06 16:24:54.43 ZNeGLXFnD.net
>>69
コンピューターリソースが少なく、IDEが今ほど快適じゃなかった

72:デフォルトの名無しさん
21/01/06 16:32:56.00 A2mjs7EYa.net
だから正しいとは言ってないからねw
正しくないからw糞作法だからそれw
==を=にしてしまうミスだけを特別扱いする理由はどこにもない>>37

73:デフォルトの名無しさん
21/01/07 16:37:13.71 JVCs6nJOM.net
messageboxみたいにダラダラ長い関数は左辺に結果書くほうが見やすいだろ

74:デフォルトの名無しさん
21/01/07 17:34:18.46 zROxGAmI0.net
ダラダラと何日も役立たずのくだらない議論ごっこいつまでやってんだ

75:デフォルトの名無しさん
21/01/07 17:54:20.44 lNg+fAcw0.net
>>74
そこにそいつの全力を入れてきたんだろ

76:デフォルトの名無しさん
21/01/07 18:01:34.63 KSndWcRv0.net
>>73
引数の多い関数呼び出しをif文に入れるなよ
戻り値をローカル変数に入れればすむ話だろう

77:デフォルトの名無しさん
21/01/07 20:35:27.74 CkbUzopy0.net
System.Text.Jsonって非パブリックフィールド含められないの?
公式にはJsonInclude属性付ければできるみたいな事書かれてるけどprivateフィールドに付けたらクラッシュする
publicフィールドならちゃんと動作するが

78:デフォルトの名無しさん
21/01/07 21:39:53.62 VY2mjM+70.net
> 公式にはJsonInclude属性付ければできるみたいな事書かれてるけど
ちなみにどこで?
docsのJsonIncludeAttributeには
> Non-public properties are not supported.
って書かれてるけど
というかフィールドの方は触れられてもないのな

79:デフォルトの名無しさん
21/01/07 21:51:23.00 6HYd5Ohs0.net
何がしたいん?
ignore?
URLリンク(docs.microsoft.com)

80:デフォルトの名無しさん
21/01/07 21:56:03.70 UQK7kjjpa.net
URLリンク(docs.microsoft.com)
URLリンク(docs.microsoft.com)
この二つの合わせ技で行けるんじゃないの?
まったく使ったことないから違ったらごめんよ

81:デフォルトの名無しさん
21/01/07 22:26:23.95 qfT0NyWK0.net
非パブリックって書いてあるけどpublicじゃんな

82:デフォルトの名無しさん
21/01/13 19:53:35.47 KSPkdcXv0.net
C#の実行ファイルはexeなの?
linuxで実行する場合もexeファイルを起動するの?

83:デフォルトの名無しさん
21/01/13 20:14:39.53 +WIx7J+j0.net
.NET Coreの話なら
dotnet publishでプラットフォームごとの実行ファイル作るよ
dotnet runだと作られたdllを起動する形になる

84:デフォルトの名無しさん
21/01/14 13:03:09.94 xE5npB3D0.net
.Net 5 SDKのみしか入れていない環境では、ビルドターゲットが.Net core 3.1になっているソリューションをビルドできないんですか?
今までのバージョンもこうでしたっけ・・・・?

85:デフォルトの名無しさん
21/01/14 14:31:35.33 gYDerupm0.net
できるよ

86:デフォルトの名無しさん
21/01/14 14:32:45.29 G12ay1Wf0.net
過去の全てのバージョンをビルドできるようにしてったら
どんだけSDKが肥大化していくことやら

87:デフォルトの名無しさん
21/01/15 03:46:56.47 rphYVuJL0.net
booleanを返す関数があったとします。
例外発生時はfalseを返すものとして、
try-catchでの戻り値の返し方って
■パターンA
try{
 ・・・
 return true;
}catch{
 return false;
}
■パターンB
try{
 ・・・
}catch{
 return false;
}
return true;
パターンAorBのどちらが主流とういうか分かりやすいでしょうか

88:デフォルトの名無しさん
21/01/15 04:08:21.28 km2IqTOsa.net
>>87
どっちでも大差ない気が。
ただいつでもAで書けるというか書くべきかは微妙だよね。
(基本的にはtryブロックに入れるのは例外発生が想定される行だけにすべき)

89:デフォルトの名無しさん
21/01/15 10:12:22.19 nDhdSCTd0.net
try抜けたあとにも処理を書く場合とかエラー発生時はアーリーリターンって考え方だとBのがいいと思う

90:デフォルトの名無しさん
21/01/15 23:06:32.97 jMoWrUgc0.net
WPFでdatagridを使った帳票アプリを作っていますがとても困っています
助けてください
やりたいこと
タッチ操作によるピンチイン、ピンチアウトをcanvasに追加したい
現在の状態(scrollviewer→canvas→datagrid)
問題点
この状態で canvasを拡大縮小する場合、Onmanipulation系のイベントを発生させたいが、scrollviewerやdatagrid上では、pannmodeがONだとスクロール以外のタッチ操作が効かない
(よくわかりませんが、この2つには最初からOnmanipulation系のイベントが実装されていて、e.handled=trueしてしまっているかららしい)ため拡大縮小機能を実装できない
現在
Microsoftの標準ライブラリのコードが載っているページからscrollviewerとdatagridのソースコードを見つけたため、
それぞれカスタムコントロールを作っているが、エラーが出て実装できない
教えて欲しいこと
標準ライブラリのソースコード(とtemplate)を使ってイチからカスタムコントロールを作りたいためやり方を教えてください
というかサンプルを貰えると嬉しいです
拙い文章で申し訳ないですがお願いします

91:デフォルトの名無しさん
21/01/16 11:21:07.86 ua+hsB73M.net
見せたくない英数字の情報を外部ファイルで使いたいです。
テキストで作った情報を加工して外部ファイルにし、アプリではそれを読み取って使います。
英数字だと、バイナリでファイルに書き出しても中身見えますよね?
どうすれば簡単にできますか?

92:デフォルトの名無しさん
21/01/16 11:35:26.62 2pvo7lqfa.net
>>91
バイナリで書き出すってどういうことを想定してる?英数字の文字コードをバイナリで書き込んだらそれは単なるテキストファイルだよ。
文字コードを簡単な暗号化アルゴリズムで暗号化してから書き出して読み出すときに復号化すればいいのでは?

93:デフォルトの名無しさん
21/01/16 14:15:59.05 PIj+e88F0.net
>>90です
サンプルのコードを作ってみました。
この画面に、タッチ操作による拡大縮小機能を追加する方法を教えて下さい。
URLリンク(imgur.com)

URLリンク(imgur.com)
PW:aiueo
URLリンク(www.datadeliver.net)

94:デフォルトの名無しさん
21/01/16 15:46:32.13 5ippMHnD0.net
WPFってなんでも好きに作れなかったっけ?
カスタムもクソもお前が並べてコントロールデスって主張すればそれがその時点からそんなような?
スクロールバーとパネルにグリッド表示されたもん表示できれば完成でええのんか?この場合

95:デフォルトの名無しさん
21/01/16 16:36:35.17 PIj+e88F0.net
カスタム云々は手段であって目的ではないです
カスタム云々言ってるのは標準ライブラリのコントロールをちょっとだけ修正したものを使いたいため、1個の手段かなと思って書きました
最終的な目的は>>93のdatagridをタッチ操作手間ズームできる機能です
て言うか WPFスレもあったのでこっちクローズして向こうで聞いた方が良さげですかね

96:デフォルトの名無しさん
21/01/16 16:55:45.03 a2u42RC60.net
ビルドして動かしてみたけど、もうできてるんじゃないの?
DataGridが拡大・縮小されたけど。

97:デフォルトの名無しさん
21/01/16 16:56:09.84 XBV3y9Xq0.net
>>91
用途が不明だけどテキストを暗号化するようなライブラリでも使って保存しちゃえば?
多少隠そうとしてもアプリが復号化したタイミングのメモリ覗かれたらバレちゃうけどね

98:デフォルトの名無しさん
21/01/16 17:00:53.45 gCH+adbg0.net
>>91
内容が簡単にはわからなきゃいいというレベルなら>>92の言うように暗号化すればいい
ガチでやるなら単体では無理
サーバー立ててそこから取得するとかするしかない

99:デフォルトの名無しさん
21/01/16 17:45:39.96 PIj+e88F0.net
>>96
タッチ操作で拡大縮小やりたいです
マウスのホイールではなく

100:デフォルトの名無しさん
21/01/16 18:24:14.81 a2u42RC60.net
>>99
ノートPCのタッチパッドで試したけどタブレットだと動作しないってこと?
それなら環境ないので確認出来ない。

101:デフォルトの名無しさん
21/01/16 18:40:16.80 PIj+e88F0.net
>>100
ノートだとできます!?
それは知りませんでした…
サーフェスgoで使用予定です

102:デフォルトの名無しさん
21/01/16 20:24:49.41 5ippMHnD0.net
>>95
それだと主張がよくわからない
datagridを改造する方針は諦めた上で1から作る話じゃねっけ?
それともdatagridを改造する方針はまだ生きてるの?

103:デフォルトの名無しさん
21/01/16 20:59:23.29 nXAeK8tya.net
WPFでタッチパネルによるズームや回転、Windows8が出たばっかりのころに
MSのサンプルをベースにして実験したけど、なんか落とし穴はあった気がしたけど
そんな難しくなかったような気が。
で当時ブックマークしておいたサンプルを見ようと思ったらもう消されちゃって残ってないのな。
MSって昔からほんとこういういらんことするよね。

104:デフォルトの名無しさん
21/01/16 23:30:45.34 PIj+e88F0.net
>>102
手段は問いません
どちらの手段でもいいので助けて欲しいです

105:デフォルトの名無しさん
21/01/16 23:41:12.28 LXHuhEJj0.net
>>90
自分はWPFは書いてるけど、タッチパネルのコードなんて書いたことないんで分からない
でも、以下の回答をコピペしたら何かのヒントになるかな?
How to enable both scrolling and zooming using pinch in WPF?
(意訳)どうしたらタッチ操作のスクロールと縮小拡大がWPFで出来ますか?
URLリンク(stackoverflow.com)
質問者が自分で答えてる
XAMLとMainのコードビハインドがあるから、試せまるよね?
ちなみに、カスタムコントロールは不要だから消した、とのこと

106:デフォルトの名無しさん
21/01/17 00:47:37.05 boTjyN9w0.net
WPF:GridやCanvasなどでマウスやタッチのイベントを拾うには?[C#/VB]
https://


107:www.atmarkit.co.jp/ait/spv/1601/06/news027.html タッチパネルとかやったことないからググったのを貼ってみる 違う話題だったらすまん



108:デフォルトの名無しさん
21/01/17 21:28:32.39 XpuuOM7d0.net
>>90です
>>105のページを実装してかなり理想に近い形になりました
ただ問題として
・datagridのscrollviewer.panningmodeがNoneじゃないと拡大ができない
・C#側で指が2本になったらNoneにするようにするとうまく動作しない(1本目or2本目の指の変化量が取得できない?
3本目の指を使ってピンチインアウトは可能)
というところが残ってしまいました
manipulationdeltaのイベントをtouchmoveにするか、ダブルタップでズームモードとスクロールモードを切り替えるという形で妥協しようかなと思います
ありがとうございました

109:デフォルトの名無しさん
21/01/18 09:58:45.73 xiibmO3Sa.net
親が同じMdiフォーム同士で値参照を行いたいのですがpublic変数やメソッドを設定しても参照することが出来ずに困っています。
初回呼び出し時は参照できるのでいいのですが、1度開いた後だと呼び出せない状況です。
なにか解決方法はないでしょうか。

110:デフォルトの名無しさん
21/01/18 10:49:21.09 6S9O78EL0.net
状況がわからん

111:デフォルトの名無しさん
21/01/18 10:54:28.68 G8032nPp0.net
教科書的には
共有したい値を持てるプロパティを持つクラスAを作る
親フォームはAのインスタンスを保持し、各Mdi子フォーム作成時にAのインスタンスを渡す
Mdi子フォームはAのインスタンス保持し、必要に応じて値を取得設定する

112:デフォルトの名無しさん
21/01/18 12:10:05.83 0ftZyRvq0.net
>>108
ご両親の相談かと思いました

113:デフォルトの名無しさん
21/01/18 12:30:16.88 HexibSYs0.net
値が入っていないとかならありえるけど、
呼び出せなくなる状況がわからん。
初回と開いた後で呼び出すのに違うメソッド使ってて、キャスト間違ったりしてない?

114:デフォルトの名無しさん
21/01/18 14:29:21.82 0wiZZ/Q+a.net
>>108
率直に言って何を言ってるのかさっぱり分からんよw
プログラミング初心者なのは誰も責めないけど
説明能力欠如はNG。
能力以前に他人に理解してもらおうという努力と推敲の跡が全く感じられない。
それじゃ誰にも助けてもらえないよ。

115:デフォルトの名無しさん
21/01/18 14:59:06.70 IRtYp4a70.net
WPFでドラッグ&ドロップ終了時に鳴るイベントって無いの?
!AllowDropな領域やウインドウ外でドロップすると何も捕捉できなくて困ってる
MouseLeftUpも捕捉できないし

116:デフォルトの名無しさん
21/01/18 15:15:01.85 G8032nPp0.net
ウィンドウ外ってことは自分がドラッグ開始した側の場合?
DoDragDropから返ってきたタイミングがD&D操作の最終結果

117:デフォルトの名無しさん
21/01/18 15:20:09.22 IRtYp4a70.net
>>115
綺麗さっぱり解決した、マジでありがとう
DoDragDropはドラック開始時に即結果返してくるもんだと勘違いしてて戻り値なんて全く気に留めてなかった
ドラッグ操作中はずっとDoDragDrop関数の中だったのか

118:デフォルトの名無しさん
21/01/18 19:46:08.26 2G0os1bF0.net
UnityのためにC#おべんきょう中

119:デフォルトの名無しさん
21/01/18 21:10:21.60 Y7agfnjO0.net
どうでもいいけど、イベントが鳴るって表現は初めて見たな
メジャーな表現なのか?

120:デフォルトの名無しさん
21/01/19 01:58:16.45 I1IZPSHx0.net
Microsoft的には型が自明な変数はstringとかじゃなくvarを使えと言ってるけど未だになんか抵抗あるんだよな

121:デフォルトの名無しさん
21/01/19 06:59:52.83 1DREI3uP0.net
>>119
申し訳ありません、それは加齢による思考の柔軟性の欠如ですので老害と言われる前にこの業界から立ち去ることをお勧めします

122:デフォルトの名無しさん
21/01/19 07:12:57.93 Cn/4ZVdb0.net
変数宣言はとりあえずvarにしといて後でなおす。

123:デフォルトの名無しさん
21/01/19 08:04:25.85 BSl7DPdbM.net
>>119はC#9.0のnew()構文を使う箇所に限っては今後許されるようになるなあ
といいつつ自分もC#のキーワードになってる型はvarじゃなく書きたいなあとも思う。書かないけど

124:デフォルトの名無しさん
21/01/19 08:20:27.18 UsQkIyf/0.net
varなんて10年以上前からあるものに未だに抵抗があるってことは長期間OSS等の他人のソースを読んでいないってこと

125:デフォルトの名無しさん
21/01/19 08:50:15.53 56Cm9vi30.net
ってか書いた奴は自明( ・ิω・ิ)とか思っててもそうじゃないことが結構あるし
他のツールで検索したときやコメントになってる箇所はそれじゃヒットしないじゃんってなって
やるんかやらないんかで言ったらvarではなくちゃんと書いたほうがいいコードだと思う

126:デフォルトの名無しさん
21/01/19 09:39:10.55 1DREI3uP0.net
>>124
> ってか書いた奴は自明( ・ิω・ิ)とか思っててもそうじゃないことが結構あるし
IDE使ってないの?

127:デフォルトの名無しさん
21/01/19 10:20:34.69 Gnfp96LE0.net
>>125
俺じゃないやつがね

128:デフォルトの名無しさん
21/01/19 10:30:06.51 BwhvdJlQ0.net
>>125
ちなみにIDE使っててもパッと見わかんないときない?

129:デフォルトの名無しさん
21/01/19 10:36:40.85 1DREI3uP0.net
お前が困ってないなら問題ないじゃん
今時IDE使わない変人は勝手に苦労させときゃいい
上司が老害でと言うならご愁傷さまだけど

130:デフォルトの名無しさん
21/01/19 10:51:07.00 2Vn7p2si0.net
>>128
パッと見わかんないじゃん
パッと見
動かして見ないとわかりにくい系のコード最近できるだけ排除してんだよね俺
インターフェースも使うのやめた
switch caseで分岐のが綺麗で仕様もハッキリする

131:デフォルトの名無しさん
21/01/19 11:04:28.30 4FOEklDdd.net
つうかIDEにvarと型を一括置換してくれる機能あるんだから自分が読む


132:ときゃ好きな方に変換すれば良い 個人的には型がわかんなきゃ処理の流れが追いづらいのはvar以外に理由があると思うけど(命名が糞とか) 型がわかんなきゃいけない場面がそもそもレアケース



133:デフォルトの名無しさん
21/01/19 11:15:40.04 w6D+a9gN0.net
じゃあ全部
List<object>とか
Dictionary<string,object>でいいじゃん
実際全部これで作ったことあるけど
わかってる間はいいよ

134:デフォルトの名無しさん
21/01/19 12:12:41.02 JrPuHU7j0.net
冗長でコード読みにくいわ。

135:デフォルトの名無しさん
21/01/19 12:27:28.26 PDD2cmkqa.net
「型が自明ならvar使え」が正しいことは自明なので、
論点は自明じゃなくて自明にすることが難しいケースがあるかどうかだね。
ないことはないね。
もちろんそういうケースだってインテリセンスで型は分かるけど
明示的に型を書いてくれた方がありがたいこともある。

136:デフォルトの名無しさん
21/01/19 12:29:00.70 u3xtRKtO0.net
プログラムに綺麗って単語を使う人が総じてNET2.0止まりなのはC++じゃないC上がりとかなのかね

137:デフォルトの名無しさん
21/01/19 12:44:43.27 kTcVE4mf0.net
c#はとっととhindley milner導入しろ派なので当然全部var使う

138:デフォルトの名無しさん
21/01/19 14:37:47.64 EuSX2rsQM.net
varってvoid*?

139:デフォルトの名無しさん
21/01/19 14:40:11.50 EHMQNeZC0.net
だいたいそんな感じ

140:デフォルトの名無しさん
21/01/19 14:50:36.80 5mJnt+0W0.net
C++にはautoって名称で追加された

141:デフォルトの名無しさん
21/01/19 15:07:54.28 1DREI3uP0.net
>>133
> 論点は自明じゃなくて自明にすることが難しいケースがあるかどうかだね。
そうじゃないでしょ
var a = f();
って書くだけでf()の型を知らない限り自明じゃないけど論点は>>130が言うように型を知る必要がどれだけあるかどうかだと思うよ
個人的にはレアケースとまでは言わないけどそんなに多くないし必要な時でもIDEですぐにわかるから問題ないレベルだと思ってる

142:デフォルトの名無しさん
21/01/19 15:09:21.35 1DREI3uP0.net
>>136-137
レス乞食?

143:デフォルトの名無しさん
21/01/19 15:33:59.98 +oCiGxYna.net
>>139
「型が自明」って言うのは右辺の式を見ただけでその型が分かるって意味だよね?
君は右辺がメソッドなら型は自明じゃないと言いたげに聞こえるけどそんなことはない。
むしろそんなケースは少ない。
では型が自明じゃないケースというのは、
(1) メソッドの命名が不適切
(2) 返り値の型が過度に抽象的だったりその問題領域でたまにしか使われない型だったりした場合
(1)は改名で改善できるけど(2)はどうやっても不可避な場合がある。

144:デフォルトの名無しさん
21/01/19 15:37:48.79 XpB5NFXI0.net
っていうかちゃんと型を書くことにデメリットがない

145:デフォルトの名無しさん
21/01/19 15:40:05.06 EuSX2rsQM.net
本当はchar*なのに手抜きでvoid*はよく使ったから、varの濫用もありなのかもね。

146:デフォルトの名無しさん
21/01/19 15:51:48.14 1DREI3uP0.net
>>141
> 君は右辺がメソッドなら型は自明じゃないと言いたげに聞こえるけどそんなことはない。
なら>>139のaの方を書いてよ
> むしろそんなケースは少ない。
根拠があるならどうぞ、ないなら君個人の経験だよね
> (1) メソッドの命名が不適切
ヒント情報ではあるけど確実じゃないよね
> (2) 返り値の型が過度に抽象的だったりその問題領域でたまにしか使われない型だったりした場合
それはたまにしか使われないから読み手が型を覚えてないってこと?
論点がちょっと違うように思う

147:デフォルトの名無しさん
21/01/19 16:02:16.12 +oCiGxYna.net
>>144
例えば.NETのライブラリのクラスのメソッドを見てみ。
メソッド名から戻り値の型が推測できないミスリーディグなのももちろんあるが、それは少数派。
大半はメソッド名から戻り値の型は推測できる。
ユーザーコードのメソッドも基本的はそうであるべきだしまともな人が書いたコードはそうなってる。
君、本当にプログラマ?

148:デフォルトの名無しさん
21/01/19 16:03:51.01 4FOEklDdd.net
全然意味が違う
コンパイラはvarだろうが型名だろうが完全に同じ動きをする
コンパイル時の挙動も生成結果も全く同じ
ただの文字の置き換えに過ぎない

149:デフォルトの名無しさん
21/01/19 16:09:05.78 +oCiGxYna.net
まあ、こんな話はどうでもいい。
「論点は自明じゃなくて自明にすることが難しいケースがあるかどうか」なのは間違ってないし、
自明にできないケースが存在することも明らかに自明だ

150:デフォルトの名無しさん
21/01/19 17:55:50.67 1Y2uTlCP0.net
俺は積極的にvarを使うが、
周りの奴には明示的に型を書いてほしい
お~れ~はジャイア~ン、ガ~キ大将

151:デフォルトの名無しさん
21/01/19 17:58:28.71 ljoN0Go60.net
ていうか、varで置いとくメリットないよね
varで書いて改行か保存をトリガに元の型に勝手に直して欲しいレベル

152:デフォルトの名無しさん
21/01/19 17:59:58.88 8yhc5FsTa.net
イテレータとかはvarで書かないと冗長過ぎる
他は型名でもどっちでもいいな

153:デフォルトの名無しさん
21/01/19 18:45:05.43 1DREI3uP0.net
>>145
そうあるべきとか言われてもねぇw
意識高い人はSystem.Collection.Generic.ListのRemove()とRemoveAll()の戻り値の型をきちんと把握してるんだろうね、俺には無理だわ
>>147
> 「論点は自明じゃなくて自明にすることが難しいケースがあるかどうか」なのは間違ってないし、
それは君の論点ね
俺としてはどうでもいい

154:デフォルトの名無しさん
21/01/19 19:00:43.09 i/8g/T9Cp.net
ねえ、お前らまとめて相談室に移動してくれない?

155:デフォルトの名無しさん
21/01/19 19:36:45.79 d6HtnSkG0.net
>>152
どう使い分けてるの?

156:デフォルトの名無しさん
21/01/19 19:43:10.02 84DXcEkC0.net
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。
テンプレが読めない回答者、議論をしたいだけの人は邪魔なので後述のC#相談室に移動して下さい。
これ無視してどうしても雑談やくだらない議論ここでしなきゃならんの?
普通の人は117からこの書き込みまで全部あぼーんした方がいい

157:デフォルトの名無しさん
21/01/19 21:28:02.04 SMVAWsya0.net
いや、好きにしていいよ

158:デフォルトの名無しさん
21/01/19 21:56:33.32 wMimx5MC0.net
ルールを守れ

159:デフォルトの名無しさん
21/01/19 21:58:18.64 T1q1SgZya.net
さすがにメソッドの戻り値の型が自明じゃないが普通とか思ってる人とは
議論にならないよね。
っていうかこういう話が通じない人、自分より下ならいいけど
上司にいるとほんとつらいw

160:デフォルトの名無しさん
21/01/19 22:27:12.89 MksL1yadD.net
>>2のリンク先に興味深いことが書かれていた
議論スレで議論すると論破されちゃうから、
初心者スレでマウント取った気になるらしい
とても腑に落ちた

161:デフォルトの名無しさん
21/01/19 22:29:03.20 MksL1yadD.net
スレのルールも守らず>>2での議論ができないような奴の言うことは役に立たないと言える訳だな
無能だからここから出られない、と

162:デフォルトの名無しさん
21/01/19 22:30:46.82 T1q1SgZya.net
>>158
これ前も書いたけど、君がやってるそれがまさに「マウントを取る」
行為なんだけど自覚があるかな?w
間違いなくないよね。
これも前に書いたが、1っか月で150しかレスが付かない過疎スレで
何を目くじら立ててるわけ?
誰が困るの?誰も困らないよね?
単に人にケチをつけてマウント取りたいという卑しい動機で言ってるだけだろアホかほんと

163:デフォルトの名無しさん
21/01/19 22:34:05.03 MksL1yadD.net
>>160
君らがそういう事してると初心者が気兼ねするって想像力もないのな
無能は無能な理由があるってことか

164:デフォルトの名無しさん
21/01/19 22:35:11.09 T1q1SgZya.net
>>161
そういうのを牽強付会と言います。

165:デフォルトの名無しさん
21/01/19 22:40:21.24 MksL1yadD.net
>>162
>>1

166:デフォルトの名無しさん
21/01/19 22:42:31.2


167:5 ID:1DREI3uP0.net



168:デフォルトの名無しさん
21/01/19 23:22:13.79 ZlDpZ/580.net
いや、好きにしていいよ

169:デフォルトの名無しさん
21/01/19 23:25:12.57 JZy8vN9I0.net
ガイドライン通りでいいんじゃねって気がするが
built-inは明示的に宣言したい気持ちも分かるので
チームに合意が得られるならcsharp_style_var_for_built_in_types = falseにしとけばいい
URLリンク(docs.microsoft.com)

170:デフォルトの名無しさん
21/01/20 00:20:44.38 J4/R6qDu0.net
>>164
ネットで吠えてるって、いきなり老害で去ったほうがいいとか言って吠えだしたのおまえだろww
数時間前の自分の発言すら忘れる馬鹿なの?

171:デフォルトの名無しさん
21/01/20 05:30:22.29 6vEnElCe0.net
老害という言葉に激しく反応する老害
っていうオチかな?
>>157みたいに話しそらして逃げはじめたから吠えてるだけって揶揄されてる事ぐらいは理解しようねw

172:デフォルトの名無しさん
21/01/20 07:03:54.32 J1Mj2vHK0.net
いや、好きにしていいよ

173:デフォルトの名無しさん
21/01/20 10:05:59.48 zLzflGmk0.net
スレが伸びててよろしい

174:デフォルトの名無しさん
21/01/20 11:56:41.88 GU4zjWk/M.net
プリントアウトしたり、秀丸で見ることを考えると明示の方がいいかな。

175:デフォルトの名無しさん
21/01/20 12:16:09.30 00FUxo8md.net
プリントアウトしたり秀丸で見るときに変換しとけばいいだけ
なんで少ない方に合わせなきゃならんのだ

176:デフォルトの名無しさん
21/01/20 12:40:59.07 XeK75HAm0.net
Dictionary<string, int> myDictionary1 = new Dictionary<string, int>();
var myDictionary2 = new Dictionary<string, int>();

177:デフォルトの名無しさん
21/01/20 15:44:09.47 U6+k13Z80.net
null許容型関連の質問ですが、nullを許容しない型のデフォルト値はどういうものが適切なのでしょうか?
例えば、あるデータオブジェクトを指すクラスフィールドにコンストラクタ以降で設定する場合など

178:デフォルトの名無しさん
21/01/20 17:53:03.33 J1Mj2vHK0.net
動作の仕様から考えないとでなくね?
nullを許容しないって理由も仕様に関わって来んじゃね?

179:デフォルトの名無しさん
21/01/20 18:05:27.20 8EWTEw8QM.net
>>173
初期値ならnull!一択

180:デフォルトの名無しさん
21/01/20 18:06:18.37 8EWTEw8QM.net
レス番ずれたごめん
>>174

181:デフォルトの名無しさん
21/01/20 18:16:09.58 5gwvq16z0.net
>>174
null許容/非許容と関係なく設定したい値の定義域の中に
そのクラスを使う時のデフォルト値として採用できるものがあるかどうかを考えるしかない
例えば「色」を設定するとして、指定がなければ何色をデフォルトにするのがいいかはケースバイケース
当たり前のこと過ぎるから本当に聞きたいことは違ってそうだけど

182:デフォルトの名無しさん
21/01/20 18:49:46.67 k0WuvcqZ0.net
>>174
デフォルトのまま使われた場合にどうなってほしいのかを考えるしかない。
ふつうは一番無難な動作になる値を選ぶだろうけど。

183:デフォルトの名無しさん
21/01/20 18:54:07.33 LBcPIMoJ0.net
>>174
nullを許容しない型だから、値型の話だよね。
例示されいているオブジェクトを格納する型は
参照型だから関係ないよね。
値型でクラスフィールドにするものだと、
インスタンス数を記録するフィールドとかだけど、
このときは明白に初期値は0になるよね。
初期値が思いつかないフィールドなんかは、
ロジックを見直して使わないようにするのがいいと思う。
クラスフィールドならクラス内グローバル変数みたいなものだから。

184:デフォルトの名無しさん
21/01/20 19:13:42.59 2t/gHyrm0.net
>>180
いつの時代の人やねんw

185:デフォルトの名無しさん
21/01/21 05:31:50.73 rjSQv0W


186:q0.net



187:180
21/01/21 09:28:06.79 AO+4cZ7Y0.net
すいません、ロートルなのでどこが知識不足なのかわかりません。
教えていただけませんか?

188:180
21/01/21 09:42:10.43 AO+4cZ7Y0.net
すいません、ググりもしないで回答した愚か者でした。
余計なことを書いたことをお詫びします。

189:デフォルトの名無しさん
21/01/21 10:30:22.56 aUdU9fY1d.net
ちゃんと反省できて偉い!

190:デフォルトの名無しさん
21/01/21 12:05:41.28 p+kzeOLk0.net
初歩的なことですみません。
Win10で項目のサイズを100%⇒125%にするとフォームが崩れてしまうのですがどこの設定をしたらよいのでしょうか

191:デフォルトの名無しさん
21/01/21 12:07:38.37 AqHcR6qx0.net
皆さん有難うございました

192:デフォルトの名無しさん
21/01/21 12:09:34.75 +iCuMAZm0.net
>>186
WinFormを捨ててWPFで作り直す

193:デフォルトの名無しさん
21/01/21 21:44:45.19 ggYpilOfa.net
>>186
フォームが崩れるって具体的にどういうこと?

194:デフォルトの名無しさん
21/01/21 21:48:16.83 YPRdayr10.net
左足の踏み込みが甘い

195:デフォルトの名無しさん
21/01/21 22:11:43.69 svbwtY+WM.net
右足ちゃうか?

196:デフォルトの名無しさん
21/01/21 22:19:59.04 vAIL1xEN0.net
違う、まず体幹を安定させるべき

197:デフォルトの名無しさん
21/01/21 22:59:12.22 /8Y0ih1k0.net
強いパンチは蹴り脚で撃つ@ホーリーランド

198:デフォルトの名無しさん
21/01/21 23:10:46.63 krexEaXy0.net
>>189
winformいじればどんなアホでもわかる現象なのでお前はおよびじゃないよ

199:デフォルトの名無しさん
21/01/22 00:53:56.18 LbFG10xGa.net
>>194
むしろアホにしか起こせない現象だから俺には理解できないんだろうねw
賭けてもいい。
この無礼な馬鹿が自動スケーリングの仕組みを
ろくに理解せつに作り込んだバグと質問者の問題は恐らく異なる。

200:デフォルトの名無しさん
21/01/22 01:04:05.40 LbFG10xGa.net
コードは意図した通りではなく書かれた通りにしか動かない。
文章も自分が何を伝えたいと意図したかではなく
文面に書かれていることだけが他人に伝わる。
後者を軽視する奴は100%プログラマとしても無能だ。
ポエムじゃないんだから読み手に想像力で補完してもらうことを期待するのは間違ってる

201:デフォルトの名無しさん
21/01/22 01:13:27.19 hRbCIOLy0.net
>>195
説明なんか不要だろ
フォームにテキストボックスとボタンでも貼って倍率変えて実行するだけで
もうリソースエディタ?で配置した画面とは似ても似つかない画面が見えるんだから
これがわからないヤツなんてそもそもwinform触ったことすらねーだろそいつ
間違いなく質問者が聞きたいのはお前にじゃねーよw
何で知らないのにクビ突っ込んでくるのか?w

202:デフォルトの名無しさん
21/01/22 01:24:26.14 OfPTadrW0.net
>>186
項目って何

203:デフォルトの名無しさん
21/01/22 01:34:58.35 dHC2KPFC0.net
>>186
項目のサイズを125%⇒100%にする

204:デフォルトの名無しさん
21/01/22 13:37:52.91 QY6O1hmh0.net
>>186
フォームのプロパティ AutoScaleMode を デフォルトの Font から None に変える

205:デフォルトの名無しさん
21/01/22 14:19:12.75 fukKKC/8d.net
wpfの唯一と言っていほどのメリットが画面scaleへの対応
winformが根強く残っていてもこの手の問題へのヘルプが今まで山のように発生している
そういった背景を知っていればあの文章だけで十分に何が問題かは予測できる上に珍しい事例でもなんでも無い
それなのに自身の無知をさらけ出し、挙げ句の果に質問者の文章が稚拙であるかのような言い訳をするのはプログラマとして無能と言えるのではないだろうか?

206:デフォルトの名無しさん
21/01/22 14:30:33.50 8p9OJtgT0.net
続きは>>2

207:デフォルトの名無しさん
21/01/22 14:31:48.32 36C6iaEea.net
>>201
本気でそう思うならくだらないこと書いてないで質問者に代わって問題の詳細を
きちんと書いてくれ。
しかし馬鹿な奴だ。
何で>>197が沈黙してるのか想像力が働かないのか。
自動スケーリングはちゃんと理解してないとトラブルの元なのは確か。
しかしちゃんと理解して使えばそんな難しい話ではないし、
「フォームが崩れる」などというあいまいな表現で問題を特定できるほど
単純な話でもない。

208:デフォルトの名無しさん
21/01/22 14:39:33.20 hRbCIOLy0.net
まあ、まともな解決方法持ってないからね俺らw
というわけでこの話題が出ると荒れるのです

209:デフォルトの名無しさん
21/01/22 18:37:43.30 aSTD1Cv1M.net
>>151
>>>145
>そうあるべきとか言われてもねぇw
>意識高い人はSystem.Collection.Generic.ListのRemove()とRemoveAll()の戻り値の型をきちんと把握してるんだろうね、俺には無理だわ
だからそれが少数派って言ってんじゃないの?
全部把握しなければいけないみたいに言ってないよね

210:デフォルトの名無しさん
21/01/22 18:56:51.05 TU/Hr8MED.net
初心者 分からないので>>1のテンプレ読んで質問する
中級者 答えられる範囲で回答
上級者様 気持ち良くなるのが目的なのでスレ違いも厭わない
答えられない事も知ったかぶりして馬鹿にしたりトートロジーで誤魔化す
上級者 テンプレ>>1を理解しているので無駄な議論はせず的確に回答

211:デフォルトの名無しさん
21/01/22 19:12:58.80 Pa9c7HBM0.net
>>205
よく使うクラスのよく使うメソッドでもそういう例があるって話
例外的なメソッドを言い出したらキリないし

212:デフォルトの名無しさん
21/01/22 19:13:26.61 BHdCo4AB0.net
まだWinFormsやってるやついるのか

213:デフォルトの名無しさん
21/01/22 19:50:27.55 OfPTadrW0.net
それしかやらんわ

214:デフォルトの名無しさん
21/01/22 20:16:51.12 buqgHbet0.net
WPF初心者にはきついわ
検索できないとか存在しないとかエラーが謎

215:デフォルトの名無しさん
21/01/22 21:43:23.06 3W/g7okM0.net
WPFの和書が皆無に近いもんな。秀和の分厚い奴も2019になってもいまだにFormsだし。

216:デフォルトの名無しさん
21/01/22 21:49:48.50 hRbCIOLy0.net
ガチでやろうとするとunityのが楽なんだよなぁ
こいつバックミュージック流しながら音なんねーし

217:デフォルトの名無しさん
21/01/22 21:51:05.66 /Gflmnvx0.net
wpf言ってる間にそのうちmaui(mvu)が来ますよ

218:デフォルトの名無しさん
21/01/22 21:53:42.78 hRbCIOLy0.net
色々と信用ゼロなので様子見です

219:デフォルトの名無しさん
21/01/22 22:06:30.38 alTQhRVad.net
stackoverflowがなければ初日でWPF投げてたと思う

220:デフォルトの名無しさん
21/01/22 22:25:31.06 1SSc6UOJ0.net
>>213
サンクスコ
知らなかった
「やっと」そんなのが出るのか、待ってたぜ
XAMLじゃなくてもC#コードビハインドだけでもUI描けるようだな
(WPFでも出来るけどな)
WPF使ってるけど、バインディングが本当にクソだわ
今までいろんなプログラミングしてきたけど、
ここまで行き詰まったことはなかった
今回こそは俺が非力ってことは認めるわ
それにしても、UWPが完全にスルーされてるのが笑えるw

221:デフォルトの名無しさん
21/01/22 23:18:39.28 OGZfgpwn0.net
どうせ流行らずに勉強しても無駄になるんだろ!騙されないぞ!

222:デフォルトの名無しさん
21/01/22 23:44:20.14 q6hHO30kr.net
>>216
理想を追い求めて
糞になったパターンだね。
wpfは普通にMVVMでなくても書けるよ。
大半のライブラリーはMVVM使ってないしね。
WPFのメリットはいろいろ間口が広いってことだよ。

223:デフォルトの名無しさん
21/01/23 00:04:09.60 jLrLN


224:aiV0.net



225:デフォルトの名無しさん
21/01/23 00:19:08.32 Ea1gaSpb0.net
WinUI 3 って、WinForms と WPF を過去のものにして主流になると思う?

226:デフォルトの名無しさん
21/01/23 00:39:31.93 MyEcyelN0.net
>>218
MVVMってあれだけいろいろゴタゴタやって、恩恵は少ないよな(と俺は感じる)。
周りの人には受けが良くて褒められるけど、俺本人はギリギリでやってる、実は。
一つのクラスの内容を表示する時には何の問題も無い。
だが、二つのクラスの内容を表示しようとした途端に
それらをまとめるクラス作ったりせんといかんだろ?
毎回クソ面倒臭い。
あと、PropertyChangedとかNotifyとか、面倒臭い。
一応できるが俺の性に合ってない。

227:デフォルトの名無しさん
21/01/23 00:49:51.79 ic//P4AFM.net
>>220
今はデスクトップアプリもWebベースで作るのが主流
もはや奪うパイがないんだよ

228:デフォルトの名無しさん
21/01/23 01:13:07.19 9AM+ezO50.net
ってことはBlazorの時代がくるですか!?

229:デフォルトの名無しさん
21/01/23 01:46:14.57 oQsbCK+Ka.net
>>205
たぶん言っても無駄。
その人の目的は「他人に食って掛かる」ことなのは一目瞭然だから。
本人は自覚してないと思うけどね。
とにかく他人が言ってることを否定することだけを目的としているから
全体として何が言いたいのかさっぱり分からない。

230:デフォルトの名無しさん
21/01/23 08:46:17.73 4VL29Q1J0.net
>>218
> WPFのメリットはいろいろ間口が広いってことだよ。
俺はデメリットだと思ってる
同じ事をやるのに複数の方法があるために余計わかりにくくなってる気がする

231:デフォルトの名無しさん
21/01/23 08:48:30.10 4VL29Q1J0.net
>>224
> その人の目的は「他人に食って掛かる」ことなのは一目瞭然だから。
お前が言うなよ ⇒ >>195,203
> 本人は自覚してないと思うけどね。
ブーメラン過ぎるw

232:デフォルトの名無しさん
21/01/23 10:01:09.88 hIt2ZLZ60.net
>>222
electronもまだまだデスクトップを置き換えられるところまでいってないと思うが
どういう環境のことを言っている?
それともOffice365のようにデスクトップアプリの代わりにWebベースで置き換えることを言っている?

233:デフォルトの名無しさん
21/01/23 10:54:35.36 kPZ46AZtM.net
>>227
VSCode、Slack、Teams、Skype
もうとっくに置き換わってるよ

234:デフォルトの名無しさん
21/01/23 11:08:23.02 RBvwbRsVa.net
自分の製品置き換えないでユーザーにそれ使えは言えないだろ

235:デフォルトの名無しさん
21/01/23 11:15:07.48 BdQtbmnfM.net
ちなみにOutlookもWeb版に統一する計画だそうで
URLリンク(www.windowscentral.com)

236:デフォルトの名無しさん
21/01/23 11:15:50.54 0Lxv01Qk0.net
VSCode以外はバックエンドはクラウドだな

237:デフォルトの名無しさん
21/01/23 11:26:24.50 +GqnBbRoM.net
今時完全にスタンドアロンなアプリなんて絶滅危惧種でしょ
そもそもそれ言い出したらWinRTから始まりWinUI含め近年迷走を続けているWindowsのモダンUIって、
どうせ今時のネイティブアプリなんてバックエンドのWebサービスに対する薄い皮にすぎないんだからシンプルな必要最低限の機能があればいいよね、
という思想が根底にあるのだし

238:デフォルトの名無しさん
21/01/23 11:53:22.54 3u/wIwRAa.net
reactive extensionってまだ存命なの?
async awaitだけやっとけばいい感じ?

239:デフォルトの名無しさん
21/01/23 12:06:47.52 hIt2ZLZ60.net
>>228
じゃあやっぱりelectronのことを言っているのか。
デスクトップアプリをこれから開発しようという時にFormsやWPFと同列に
electronが選択肢に挙がる?
前にやったことがあるけど、クロスプラットフォームにしたいとかどうしても
使いたいjsフレームワークがあるとかの理由でもなけりゃ、面倒くさすぎて
今のままじゃわざわざ使いたいとは思わなかったが。

240:デフォルトの名無しさん
21/01/23 12:11:41.19 2Kl/0dQh0.net
普通にレイアウト強化したwinform2でも出してくれたら良かったのにな
webは別でやればいいのになんでくっつけようとするんだろう

241:デフォルトの名無しさん
21/01/23 13:18:57.65 LnVZ1o8ia.net
>>226
ね、言った通りでしょ。
こういう人、本人はまったく自覚がない。
どちらの言い分に分があるかは>>189からのやり取りを見れば一目瞭然。

242:デフォルトの名無しさん
21/01/23 13:38:17.35 A5DB0QkA0.net
>>234
electron選択肢に上がるけどな。
C#アプリでも、もうすぐWebView2が出るから楽しみに待ってるぞ。
なんだかんだでだんだんリッチなUIが求められるようになってるし、ブラウザコンポーネントでやるのは合理的だと思ってる。
枯れてきて安定もしてるし充分速いしな。
最近UIをブラウザで作ること多いけどなかなか便利よ。
embedIOでサーバ起こして、Process.startで開くとかやったり。
Xamarinに持ってったときも一切変更せずにAndroid側でWebView貼り付けて終わりにできたし。

243:デフォルトの名無しさん
21/01/23 13:58:24.89 4VL29Q1J0.net
>>236
自覚がないやつの戯言乙w
具体的な反論できないから一目瞭然とかで誤魔化すしかないのが哀れ

244:デフォルトの名無しさん
21/01/23 15:17:23.23 2XdYRaxf0.net
Electronって.NET Coreの自前完結みたいにちょっとしたGUIアプリでも100MBくらいになるのは避けられないの?

245:デフォルトの名無しさん
21/01/23 15:23:50.73 A5DB0QkA0.net
>>239
これ辛いよね。

246:デフォルトの名無しさん
21/01/23 15:32:23.82 M9OdZ2iK0.net
Electron用にパッチをあてたchromiumを含んでるから仕方ないね
node.js系はflockすら標準機能に無いのがもにょる

247:デフォルトの名無しさん
21/01/23 15:38:16.51 A4wCeRTc0.net
edgeがchromium採用しているからそれを流用することって出来ないのかね

248:デフォルトの名無しさん
21/01/23 15:54:08.79 rSxKixC+0.net
msの人がwebview2使ったelectronもどき作ってた記憶あるけど忘れた

249:デフォルトの名無しさん
21/01/23 16:18:50.61 XGqYtf2f0.net
何のスレだよここ

250:デフォルトの名無しさん
21/01/23 16:25:03.06 kfSEiVWz0.net
>100MB
○avaみたいにランタイム別インスコよりは1つのEXEになってた方がマシ

251:デフォルトの名無しさん
21/01/23 16:50:48.24 MyEcyelN0.net
>>225
そうそう、一つだけどんな場面でも使えるかっちりした方法を用意してくれればいいのに、
〇〇の場合は方法1、△△の場合は方法2、みたいに場合分けがあるから分かりにくい
>>235
大賛成
WinFormの弱点を多少改善した版が欲しい

252:デフォルトの名無しさん
21/01/23 16:56:04.81 XHKedqhC0.net
>>246
最近思うんだけどそういうのって恐らくわざとやってない?
いいライブラリを作りたいんじゃなくて新しい仕様を出さないと入門書も売れないよねっていう

253:デフォルトの名無しさん
21/01/23 17:08:24.40 hIt2ZLZ60.net
周りの部署や付き合いのある外注はみんな「ふつーWPF」って感じなんだが、
2chでだけいまだにこんなにFormsにこだわってる人を見かけるのがすごく不思議な感覚。

254:デフォルトの名無しさん
21/01/23 17:30:20.73 RC6F3sECM.net
>>248
WPFも十分レガシーだよ

255:デフォルトの名無しさん
21/01/23 17:30:28.90 MyEcyelN0.net
>>247
わざとやってるのかもね
MS社員が今年の目標として「新規に○○の機能を実装する!」とか掲げて、
クソ機能を実装して今年のノルマ達成、とかね
俺らからしたら大きなお世話なんだけどな
XAMLが絡むGUIの部分はそんな気がする
C#の言語仕様自体は良い具合に他言語の良いとこ取りしてて結構好きなんだけどな

256:デフォルトの名無しさん
21/01/23 17:54:40.45 LhKkB5Axa.net
MSも子供の遊びじゃないんだからそんな幼稚な動機があるはずがないw
Silverlightは別物としてもWPF, Metro UI, UWPがコケた理由は単純に人、時間、金の投入量をケチって
周到さが足りなかったからだと思うよ。
Win32を作った時ぐらい気合を入れてたらもう少しマシなものが出来てたはず。
.NETやC#にも多少そういうところがあったよね。
頑張ればC#3(VS2008)を最初のバージョンにすることも出来たんじゃないか
どうでもいいけど「スレの趣旨と違う話をするな!」って人が現れないのは
きっとその人も話題に参加してるからだろうねw
言っても無駄だと思うけどそういうご都合主義を反省して欲しいよね

257:デフォルトの名無しさん
21/01/23 17:58:02.93 LhKkB5Axa.net
思えば、Vistaの時にWinFSなるものがとん挫する事件があったけど
あのあたりからMSはちょっとおかしくなってる気がするね。

258:デフォルトの名無しさん
21/01/23 18:06:49.31 hIt2ZLZ60.net
>>249
その「レガシー」ってどういう意味で言ってるんだろうか。
今デスクトップアプリ開発するのにWPFに替わるものが他にあるということかねぇ。
上で誰かが言っていたElectronもうちの周りじゃあ1プロジェクトくらいしか採用していないが。

259:デフォルトの名無しさん
21/01/23 18:12:08.90 4VL29Q1J0.net
>>246,250
> 〇〇の場合は方法1、△△の場合は方法2、みたいに場合分けがあるから分かりにくい
違う、〇〇は方法1でもできるし方法2でもできる、△△は方法3と方法4でできる
って言うのがまずいって思ってる
具体的には個人的にはWPFはデータ・バインディングとコマンドでやるべきだと思うけど、WinFormからの移行のためかボタンに名前付けてコードから参照するとかコードのイベントハンドラをxamlで指定するとかもできる
できるのはいいんだけどWeb上の解説も両方が説明されてたり下手すると混在して使用されてたりしてわかりにくくなってるような気がする

260:デフォルトの名無しさん
21/01/23 18:46:38.00 NjLwKFuQ0.net
>>254
その割には外部フレームワークを入れないといろいろ不便なのがね..。
例えばBindableBase程度のものはMSで準備して欲しかった。
ViewModelは通常このクラスをベースにして...という基本的なスタンスだったらもっと分かりやすかったと思う。

261:デフォルトの名無しさん
21/01/23 19:41:56.19 J/sR9Yyb0.net
>>255
Microsoft.Toolkit.MvvmってのがWindowsCommunityToolkitの一部としてもう直ぐ出るらしい

262:デフォルトの名無しさん
21/01/23 20:54:43.81 4VL29Q1J0.net
>>255
ああ、それは言えるな
ハードで言うリファレンス設計を示してほしいね

263:デフォルトの名無しさん
21/01/23 21:19:01.64 88Ok/30EM.net
>>255
だよな。
WPF当たりから雑に作って、使いにくいのが多すぎる。Delphiの方がましかも。

264:デフォルトの名無しさん
21/01/23 21:26:16.24 XHKedqhC0.net
データバインディング使わないほうがうまくいくことが多いよな

265:デフォルトの名無しさん
21/01/23 22:15:59.95 4VL29Q1J0.net
>>259
データバインディング使わない方が簡単なのは認めるけどうまく行かないのはお前さんの能力かと…

266:デフォルトの名無しさん
21/01/23 22:17:01.87 MyEcyelN0.net
>>254
いや、あるでしょ
例えば、CLRプロパティと依存関係プロパティはどう?
それと、
>〇〇は方法1でもできるし方法2でもできる、△△は方法3と方法4でできる
>って言うのがまずいって思ってる
それって、
△△は方法1と方法2じゃ出来ないんだよな?
〇〇は方法3と方法4じゃ出来ないんだよな?
俺はそれがまずいと思ってる
〇〇が方法1でも方法2でも最終的に可能になるなら別に構わないんじゃないか?何が問題?
逆に、〇〇を解決しようと思って方法3で始めたが、後々になって方法1か方法2でしか出来ないことが判明した方が痛い

267:デフォルトの名無しさん
21/01/23 22:27:19.36 H8XCArTD0.net
asp.netでデスクトップソフト開発ってどうなんだろうか

268:デフォルトの名無しさん
21/01/23 22:37:04.28 XHKedqhC0.net
>>260
開始日と終了日の最大期間が3ヶ月で
開始日のデフォルト値が2000年のときの2021年1月23日~2月10日の設定方法に付いて悩みたいのか?

269:デフォルトの名無しさん
21/01/23 23:15:35.62 J/sR9Yyb0.net
WinUI3というかUWPではバインディングが改良されて
コンパイル時に厳密な方チェックやってくれてバグに悩まずに済む

270:デフォルトの名無しさん
21/01/23 23:30:17.78 4VL29Q1J0.net
>>261
> 〇〇が方法1でも方法2でも最終的に可能になるなら別に構わないんじゃないか?何が問題?
うん、問題ないと思うならそれはそれでいいと思うよ
>>263
何を言いたいのかさっぱりわからんけど、個別の不具合の話じゃないなら説明してみて

271:デフォルトの名無しさん
21/01/23 23:31:10.83 4VL29Q1J0.net
>>264
そう言うのもWPFに還元して欲しいね

272:デフォルトの名無しさん
21/01/24 00:29:30.39 H0Ke+o4H0.net
>>265
あったまわりぃなお前
データバインディングしてる変数に間違ったデータが入るようにしちゃって大丈夫か?
開始日と終了日に2000年1月1日が入ってるときに
開始日に2021年を入力したとき最大期間に反応してエラー出すだろ?
ここでエラーを出さなかったらバインドしてるGUIがおかしくなる
したらどうやって開始日と終了日に2021年を設定するんだよ

273:デフォルトの名無しさん
21/01/24 02:30:17.53 W8Ofgakl0.net
>>267
InotifyDataErrorInfoなどを使う場合、実装方法にもよるけど、間違った値や無効な値を保持する設計もおかしくないと思う。保持はするがエラーが発生しているという状態で、そのエラー内容を素直にViewが表示する設計。
逆にViewModelには正しい値しか保持しないとした場合、一時的にViewとViewModelで不整合が生じている状態になりますが、皆さんどのようにされてますか?

274:デフォルトの名無しさん
21/01/24 08:01:29.17 H0Ke+o4H0.net
>>268
それはバインドやめるって言ってるよね
GUIはそんなもん表現できないし
エラー値が入ってくるならそもそもバインドって仕組み使わないほうが楽だよね

275:デフォルトの名無しさん
21/01/24 08:34:20.11 G9QcBvFS0.net
>>267
想像以上にレベルが低かったw
なんでvalidateの仕組みがないと思った?
URLリンク(docs.microsoft.com)
まあ、validateは色々なやり方あるし相互依存とかむっちゃ面倒になったりするからWPFも結構難しくて>>267あたりだと理解できないかもな

276:デフォルトの名無しさん
21/01/24 08:39:49.42 H0Ke+o4H0.net
>>270
エアプ乙

277:デフォルトの名無しさん
21/01/24 08:58:35.15 OUhuYnVtM.net
>>268
自前でエラー内容を保持するしかないように思う
URLリンク(sourcechord.)はてなブログ.com/entry/2014/06/08/123738
個人的にはViewModelに不正な値を入れるのは気持ち悪い
>>269,271
そろそろ黙った方がいいと思うよ
顔真っ赤すぎだろw

278:デフォルトの名無しさん
21/01/24 09:06:53.70 H0Ke+o4H0.net
データバインディング使うのやめろやw

279:デフォルトの名無しさん
21/01/24 09:20:23.60 EJajcfhwd.net
わざと新しい難解な方法を作ってるって発想はすげえな。
新しい方法使ってみたらわかるけど、なるほど、一部の課題は解決したな、みたいな感じになるだろうに。

280:デフォルトの名無しさん
21/01/24 09:22:49.58 EJajcfhwd.net
ViewModelはModelではないんだから、別にエラーが入ろうが何でも良いだろ。
ViewModelからModelにするときにまとめてValidationしてるけど。
そうじゃないとそれこそ依存項目のチェックが出来んじゃん。
ViewModelとしてModelを使おうとするから変な話になるんじゃないの?

281:デフォルトの名無しさん
21/01/24 09:33:19.71 H0Ke+o4H0.net
>>274
でもさ1つの値でうまくいってても他と絡みだすとそれじゃうまくいかんのよ
開始日と終了日は一例ね
ベース値と複数の差分値で表現してるものもうまく行かない
将来的になにかの値と関連する可能性があるならこの仕組みは入れないほうがいいかも?
データバインドっていう複数の値が連動するときにこそ役に立つ仕組みと思いきや実は鬼門とかいうおマヌケなお話(笑)

282:デフォルトの名無しさん
21/01/24 11:17:06.24 9PCPJHwQ0.net
>>276
終了日のMaximunとMinimumバインドすりゃいいだけじゃね
開始日設定したらそこで変更すりゃ良い

283:デフォルトの名無しさん
21/01/24 11:20:17.45 +fPfkl180.net
>データバインディングしてる変数に間違ったデータが入るようにしちゃって大丈夫か?
大丈夫だろ
ビューモデルはあくまでビューの状態を表すんだから、ビュー(UI)の方で一時的に開始日と終了日が
ずれてもOKで別途最終確定ボタンみたいなUIを作るなら、
開始日と終了日の関係がずれた値(状態)になってもそれは
ビューモデル的には正しい値だぞ
モデル的には間違った値だけど
ちゃんと区別しよう

284:デフォルトの名無しさん
21/01/24 11:25:48.71 wSlEv8S70.net
>>251
>WPF, Metro UI, UWPがコケた理由は単純に人、時間、金の投入量をケチって周到さが足りなかったからだと思うよ
いや
センスが無いだけだよ
どれだけリソース有っても創れない
あいつらの限界

285:デフォルトの名無しさん
21/01/24 11:33:52.77 +fPfkl180.net
ビューモデルはあくまでビューの状態を表すように設計するんだぞ
最終的なモデルの状態に不整合があったらまずいが、
ビューモデルはあくまでもビューの状態を表すんだから、一時的に不整合を許すUIを
設計するなら、ビューモデルもそういう状態になるだけだし
ビューモデルからしたら別に間違った状態じゃない
だから、
>逆にViewModelには正しい値しか保持しないとした場合、一時的にViewとViewModelで不整合が生じている状態になりますが、皆さんどのようにされてますか?
とか、前提がおかしいやろ。ビューの状態を表すようにViewModelつくるのに不整合を生じるようにつくるとか意味がわからん

286:デフォルトの名無しさん
21/01/24 11:47:47.30 H0Ke+o4H0.net
>>278
それデータバインドいらないよねって言ってるよね?

287:デフォルトの名無しさん
21/01/24 12:13:40.42 +fPfkl180.net
ビューモデルに他にもテストしやすいとか利点あるだろ?
つか、数学じゃないから誰がもが納得する100%の
答えなんてないから君がそう思うならそう思えばいいと思う

288:デフォルトの名無しさん
21/01/24 12:18:43.65 H0Ke+o4H0.net
データバインド捨てちゃえよ
楽になるぞw

289:デフォルトの名無しさん
21/01/24 12:28:41.42 Mt48K89t0.net
MVVMがどうのって、今話題のMVUの話題絡みで出てきたのかと思いきや・・・・・なんも関係なかったぜ

290:デフォルトの名無しさん
21/01/24 13:48:48.78 3jwmj/rb0.net
>>276
うまく行かないか?
全部の値でやればいいだろ。
終了日と開始日、どっちにエラーメッセージ出す気なんだ?
俺は両方だと思ってるが。
>>281
要るだろ。
試験するときにUI生成しなくてもモックModelとのUnitTest通せるし楽じゃん。

291:デフォルトの名無しさん
21/01/24 14:24:10.62 H0Ke+o4H0.net
>>285
そうやってエアプでできるできる言いたいなら言ってろ

292:デフォルトの名無しさん
21/01/24 14:40:58.72 3jwmj/rb0.net
>>286
エアプというか…普段使ってるから自信を持って出来ると言えるんだけど。
別にWPFだけではなくて、他のプラットフォームでもViewModel使ってるぞ。
自分に出来ないからといって、みんな出来ないのに出来るってフカしてると思い込むのは良くないんじゃないか?
複数の値が連動するときにこそ役立ってると思うんだが。違うのか?
鬼門だと一切思わん。
将来的に何か他の値と関連する可能性があるなら尚更じゃん。
なんでViewModelでエラーを表示してる状態が不整合なのか俺には全然わからん。

293:デフォルトの名無しさん
21/01/24 14:50:18.37 H0Ke+o4H0.net
>>287
じゃあ、>>263>>267をどうやって実装してんの?
開始日と終了日なんて普通にアプリ組んでて出てこないわけないよね?
やったことあるんでしょ?

294:デフォルトの名無しさん
21/01/24 15:02:34.21 3jwmj/rb0.net
>>288
普通に入力可能にして、エラーメッセージの表示条件が、開始日>終了日であること。
保存チェックはエラーメッセージが一切表示されていない事。Modelには一切波及せずViewModelで完結する。
仮保存のみOK。仮保存はViewModelのうちシリアライズしてはいけない項目を殺して保存。
入力中に一時的に入れ替わるなんてよくある事なんだから、いちいち選択不可にしてたらユーザビリティ悪すぎでしょ。
開始日がデフォルトで今日~空白の時に、一昨日から昨日までの値を入れるのに、いちいち開始日から入力させんの?アホらしいじゃん。
入れ替わった時点でエラーメッセージに「開始日と終了日が入れ替わっています」と出しておけば一発でしょ。ついでに保存ボタンのEnabledも変えとくと親切だな。
エラーメッセージも、保存ボタンのEnabledも、両方ともプロパティにバインドしとけば、値を変えるだけで制御も変わる。便利よね。

295:デフォルトの名無しさん
21/01/24 15:03:44.94 3jwmj/rb0.net
まさか今どきエラー項目をダイアログ表示するとかいう発想じゃ無いだろうな…。

296:デフォルトの名無しさん
21/01/24 15:04:38.53 F+2F2LGq0.net
>>289
それがVMの役割だよなぁ
VMはViewの値をバインドしてるんだから、どんな値だろうと関係ない。
VMにバインドされた値が範囲外なら赤枠などで注意を促し、保存ボタンを押せなくする。
モデルに渡すときに仕様の範囲内であればいい

297:デフォルトの名無しさん
21/01/24 15:05:11.26 H0Ke+o4H0.net
え?できたん?
ちょっとよくわからなかったけど

298:デフォルトの名無しさん
21/01/24 15:06:12.10 3jwmj/rb0.net
>>291
まさにそう。
ボタン一発でデフォルト日にしたい、なんて要件が生まれたら、Commandをバインド。
わかりやすいと思うよ、俺は。

299:デフォルトの名無しさん
21/01/24 15:07:13.99 3jwmj/rb0.net
>>292
何がわからんかった?

300:デフォルトの名無しさん
21/01/24 15:08:16.18 H0Ke+o4H0.net
>>294
え?値が範囲外で保存できちゃう?

301:デフォルトの名無しさん
21/01/24 15:09:00.14 3jwmj/rb0.net
>>295
保存ボタンがDisabledなので保存のしようがないだろ。

302:デフォルトの名無しさん
21/01/24 15:09:38.35 3jwmj/rb0.net
それでもできる仮保存は、ViewModelの保存であって実データではない。画面保存。

303:デフォルトの名無しさん
21/01/24 15:10:40.00 H0Ke+o4H0.net
>>296
チェックしなくしたん?
開始日と終了日の個別のバリデーションはあったら動くん?

304:デフォルトの名無しさん
21/01/24 15:11:59.27 H0Ke+o4H0.net
>>297
え?それもうデータバインドいらねーじゃんw
まあ、でも俺はその結論で満足だぜw

305:デフォルトの名無しさん
21/01/24 15:12:28.56 3jwmj/rb0.net
>>298
チェックしてるじゃん。
プロパティが変わるたびにチェックされるよ。
された結果エラーメッセージが確定して、エラーメッセージが確定したら保存ボタンのEnabledが確定するでしょ。
個別のバリデーションは好きにやれば良い。同様にエラーメッセージを吐いとけば、エラーが一つでもあれば保存ボタンがDisabledになるんだから問題無い。

306:デフォルトの名無しさん
21/01/24 15:13:36.69 3jwmj/rb0.net
>>299
要るじゃん。UIコード一切触らなくても、バリデーション増やせばエラーメッセージを増やせるんだぞ。
そしてテストはViewModelで完結する。

307:デフォルトの名無しさん
21/01/24 15:15:55.11 3jwmj/rb0.net
データバインドできるから、画面保存が、不要な項目を殺す程度の実質ただのシリアライズで実現できるんだけどな。

308:デフォルトの名無しさん
21/01/24 15:17:35.09 H0Ke+o4H0.net
開始日、終了日ダイアログボックス表示してOKボタンで値を保存するんです?

309:デフォルトの名無しさん
21/01/24 15:20:53.63 3jwmj/rb0.net
>>303
開始日の横、終了日の横に、エラーメッセージを表示するラベルを置いてバインディング、
必要ならエラー項目は赤地なんかにしてもいい。
HasErrorもあるし、IDataErrorInfoもあるだろ。
好きなクラス作っても構わん。

310:デフォルトの名無しさん
21/01/24 15:23:17.99 H0Ke+o4H0.net
保存とチェックはOKボタン?

311:デフォルトの名無しさん
21/01/24 15:24:54.20 H0Ke+o4H0.net
UNDO UNDO REDO REDO OK?

312:デフォルトの名無しさん
21/01/24 15:27:25.67 3jwmj/rb0.net
チェックは自動。PropertyChanged使ってもいいし、ReactivePropertyでも良い。
保存は保存ボタン。
Undo、RedoはViewModel保存してれば良いじゃん。


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch