- C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net
955 :デフォルトの名無しさん[sage]:2017/04/21(金) 18:12:04.32 ID:FFGpioc0 - >>953-954
そもそもコントロールのイベントで再描画ってのはちょっとw 表示先頭位置とか表示倍率とかの値はFormなりUseControlなり 独立したクラスなりのプロパティになってるはずで、それらのプロパティの変更痔に 再描画されるようにしないと 無駄な再描画を避ける方法だけど、一番いいのは余程重いのでなければ 気にしないことだと思うw どうしてもこだわるなら、直接再描画するんじゃなくて タイマーのイベントに再描画を紐づけしてタイマーをスタートさせるだけにするか、 Application.Idleイベントをうまく使うかするとか
| - C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net
965 :デフォルトの名無しさん[sage]:2017/04/21(金) 19:56:01.47 ID:FFGpioc0 - >>960
コントロールのイベント使うな、っていうのは無駄な再描画対策じゃなくて設計論ね そういう設計だと、例えばプログラムで倍率を変更しても再描画されないよね。 まあ余計なお世話だよねw Application.Idleは例えばこうやって使う bool DrawOnIdle {get; set;} void Application_Idle(object sender, EventArgs e} { if (DrawOnIdle) redraw(); DrawOnIdle = false; }
| - C#, C♯, C#相談室 Part92 [無断転載禁止]©2ch.net
970 :デフォルトの名無しさん[sage]:2017/04/21(金) 20:43:34.30 ID:FFGpioc0 - >>968
勘違いではないよね。 その認識であってると思う。 コントロールのプロパティを値の入れ物として利用するのは普通はよくない作法だと思う。 コントロールはあくまでUI(表示と入力)に徹するべきで、 表示先頭位置とか表示倍率とかの値はFormなりUseControlなり 独立したクラスなりのプロパティにするべきだというか、普通はすると思う。 で、再描画はコントロールのプロパティが変更されたタイミングではなく、 表示先頭位置なり表示倍率なりのプロパティが変更されたタイミングで行う。 当然、この場合も一度に複数のプロパティが変更されたときに 不要な再描画を回避する方法は考える必要がある
|
|