>>965
ちょっと話が噛み合って無い感があるから整理すると、

JavaScript:
プログラムからの変更ではイベントが発火しないから、
全てのイベントハンドラは redraw(); で締めないといけないが、
イベントハンドラ内で他コントロールをどれだけ触ろうと何も考える必要なし。

.NET:
プログラムからの変更でもイベントが発火するから、
関連しているコントロールのイベント先をすべて redraw() にしておけば再描画される。
だから単純な再描画についてはこっちの方が記述はすっきりする。
ただし、今回のように複数コントロールを触るイベントハンドラがあった場合、
その回数だけ再描画される可能性がでてくるからそこを対策しようとすると、途端に汚くなる。
(JavaScriptのコードは redraw(); を書くしかないし、再描画だとはっきり分かるが、
.NET のコードは俺が今やっている妙な対策法だと???なコードになる)

再描画されればいいのなら、.NETの方が良いけど、
2度描画禁止とかにしたい場合、.NETの方が記述が余計に必要になる。←これって俺の勘違いか?
というのが今回の疑問。

> そういう設計だと、例えばプログラムで倍率を変更しても再描画されないよね。
違う。プログラムから各コントロールのValueを変更することによって、自動的に再描画させてる。
というか、波形表示画面内容と表示開始位置と倍率は当然同期してないといけなくて、
逆に、表示開始位置と倍率が変わらないのなら再描画の必要がない。
それはコントロールの値を変更する構造によって自動的に達成される。
(.NETは同じValueを上書きしてもイベントが発火しない為)
だからFitボタン連打とかの場合の無駄な再描画はここで止められる。
多分.NETの仕様だとこういう事だと思うんだよ。(これがMVC的に云々というのはまた別の話)
それで、2度描画禁止の場合はどう実装するべきだという想定なのだろう?という疑問なんだ。
普通はキューイングするから問題ない、ってことなのかな?
(なお、明示的に再描画したい場合は redraw() を呼ぶだけだから問題ない)