[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 09/03 07:28 / Filesize : 292 KB / Number-of Response : 1049
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

C#, C♯, C#相談室 Part92



1 名前:デフォルトの名無しさん mailto:sage [2017/01/28(土) 16:46:53.58 ID:op86qfG/.net]
■Visual Studio 2015 Community & Express (無償の統合開発環境)等はこちら
www.visualstudio.com/downloads/

■コードを貼る場合はこちら
ideone.com/

■前スレ
C#, C♯, C#相談室 Part91
echo.2ch.net/test/read.cgi/tech/1467211515/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。

1017 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:04:34.72 ID:rPWpf+kQ.net]
n秒に1回描画フラグを監視する仕組みのが楽だなw
コントロールの挙動全部把握してるやつが触らないとぶっ壊れるって
モノ作ってんだろ?
それって設計悪くない?

1018 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:07:01.51 ID:MpBIOwvX.net]
>>970
> コントロールのプロパティを値の入れ物として利用するのは普通はよくない作法だと思う。
MVC的にはそうだね。ただ、この部分のUIなんて変更はないからどっちでもいいのも事実。
ところでその場合、バインディングはどう実現する?

(C) numericUpDownのValueChanged→モデルの値を変更

これはいい。ただFormの場合、

(D) モデルの値が変更された→イベント発火でnumericUpDownの表示値を変更

とすると、当然(D)の直後に(C)が発火して、
モデルの値を再度「同じ値」で上書きして、そこでイベントが止まる。
これって全くの無駄でしょ。

.NETの仕様を決めた時、これらが想定されていないはずもなく、
彼等なりの上手い使い方があったと思うんだよね。
(今現在それが良いとされる手法かどうかはともかく)

今のところ、表示とモデルの内容を同期するのに一番簡単な方法は、
「numericUpDownのValueをモデルの値として扱うこと」なんだよ。
そしてこれだと他クラスから見えないので、コピーを持ってる。
これは後付でこうなった、というのもある。
実装は、イベントハンドラに何個でも関連づけさせられるからそこでさせてる。

1019 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:13:36.92 ID:MpBIOwvX.net]
>>971
モデルをどこに置くか、という話なんだよ。
Formの仕様だと、numericUpDownのValueプロパティを「モデルの値」として扱えば
すべてすっきり行く仕様になってる。だからそうしてる。
ところが2度描画禁止だとすっきり行かない。だからこれが疑問。
それならJavaScriptみたいに、最初から
「必ず1回redraw()を書かないとダメだけど、1回書けばいいだけです」の方が良かった。
だから、彼等なりの想定実装があったはずで、それを考えてる。

1020 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:15:27.48 ID:rPWpf+kQ.net]
使って問題がある場面のバインディングなんて使わなきゃいーじゃん

マイクロソフトお作法病って損だと思う

1021 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:15:53.73 ID:Re4upQlq.net]
>>963
EntityFrameworkはもう十分枯れてるだろバカ
Coreは確かに発展途上だけどね
元のレスを読まないからこんな的はずれなURLを貼っちゃう

1022 名前: []
[ここ壊れてます]

1023 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:18:21.74 ID:lnct7jOB.net]
イベントがダブりそうなときはイベントを-して値代入後+しなおしているなあ
>>970の2段落目に賛成だな
見なおしたり他に移植するときにそっちの方が分かりやすいし

1024 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:33:34.84 ID:MpBIOwvX.net]
>>974
バインディングといったから分かりにくいが、放置した場合は表示が間違ってるんだよ。
これは完全にアウト。

Fitボタンが押された→
モデルの値が変更された→
再描画された

これで「波形表示」は最新になるけど、
「表示開始位置」と「倍率」の表示されている値が古いままでしょ。
そしてFormのイベントはそれ用になってないんだよ。

>>976
> イベントがダブりそうなときはイベントを-して値代入後+しなおしているなあ
これってかなり面倒でしょ。

今のところタイマで遅らせるのが一番すっきりするからそうしようかと思っている。
(これは他部分で既に実装済みなのを流用出来るというのが大きいが)
redraw()を呼んだら16ms後にredraw_implement()が呼ばれて実際に再描画とか。
ただこんなの.NET作った頃から想定してたのかな?という疑問はある。

1025 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:34:54.35 ID:h0UgT1Ml.net]
>>966
来年にはYAMLになってると思うよ



1026 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:37:01.31 ID:72Ff37pO.net]
>>975
なんだ、枯れてるとか言ってボコボコ叩かれて悔しかった奴か
「Coreは確かに発展途上だけどね」
Core の前になんかつくだろカス

1027 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 21:49:04.78 ID:rPWpf+kQ.net]
>>977
意味わからん
画面は自分が必要なときにデータを見て勝手に描画するじゃん
フォームはコントロールの操作によってデータを書き換えるじゃん
バインディングなんて使わなきゃ悩む要素皆無だったんでしょ?

1028 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:08:05.95 ID:Re4upQlq.net]
>>979
おや、ようやくCoreを認識できたんだね

1029 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:08:53.85 ID:1MuUAA6h.net]
>>979
自分が叩かれていることに気づいていないのは見苦しい

1030 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:09:14.20 ID:k73pGP5K.net]
>>977
そのへんはレンダリングスレッドがUIスレッドと分かれてるWPFでやろうとしてたと思われ。

1031 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:29:56.50 ID:MpBIOwvX.net]
>>983
え?WFPって描画はUIスレッドじゃなくていいのか?
それはすごくいい。
それだとスピンコントロールのボタン連打で描画が追いつかない時にも、
イベントが溜まることなく最新が常に表示されるね。
何もしなくても。

まあ何だかんだで新しい物は改良されてるってことだね。

1032 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:29:56.87 ID:Cei54Lla.net]
かずきが日本マイクロソフトに入社してる!
本当に浦島状態

1033 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:34:32.90 ID:baDy0zQG.net]
>>985
誰だよ?

1034 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:37:38.47 ID:k73pGP5K.net]
>>984
描画はUIスレッドなのは変わらない。
UIスレッドで同じところにポンポン書き込んでも適当に間引かれる。

1035 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 22:37:41.43 ID:h0UgT1Ml.net]
>>984
クソ重いから結果的にはWinFormsの方が遥かにレスポンス早いんだけどね



1036 名前:デフォルトの名無しさん mailto:sage [2017/04/21(金) 23:07:08.58 ID:MpBIOwvX.net]
>>987-988
うーむ、やはりイマイチか。

回答くれた皆さんありがとう。
俺は>>970ではないけど、次スレ俺が立ててもいいけど。(>>1)

1037 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 01:19:50.97 ID:Af8PazvW.net]
>>954
なんか無茶苦茶だな。
クリックイベントの最中に描画処理を実行してるのか?
再描画させたいならInvalidateRectとかでWM_PAINTを発生させてそこでまとめて描画するのが作法だぞ

1038 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 03:39:27.34 ID:BJdj4TZ/.net]
>>990
御説ごもっともだけど、そんな偉そうに言うほどのことでもないよ

1039 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 04:54:36.82 ID:y5zvwDCw.net]
偉そうかどうかは関係なくない?w

1040 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 06:10:42.01 ID:4+2xx2Ut.net]
>>992
発言の正当性より自己満足度で正当性を確保しているので重要です

1041 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 06:23:09.19 ID:9wvnPEyC.net]
>>990
InvalidateRect発生させてもRect無視して全画面更新しちゃうよ。ふざけんな!
みたいな話だからな。ちょっと方向性が違うw

1042 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 06:45:50.45 ID:+hjaOcO8.net]
>>991
2ch初めてか? w

1043 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 08:50:41.11 ID:iVvswOrb.net]
次スレ立ててくる

1044 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 08:52:51.85 ID:iVvswOrb.net]

C#, C♯, C#相談室 Part93
echo.2ch.net/test/read.cgi/tech/1492818720/

1045 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 09:05:33.60 ID:/oxuzvQq.net]
ワッチョイなしで立て直して



1046 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 09:09:40.54 ID:AhKt2WIP.net]
やなこった

1047 名前:デフォルトの名無しさん mailto:sage [2017/04/22(土) 13:34:52.68 ID:3nsKygnV.net]
1000

1048 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<292KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef