もう嫌だ!と思ったソースその③
イベントはFormのデザイナからだけではなく、プログラムで動的に変えることが可能!
そして何も考えずにこの方法を使っていると、後で痛い目に合う。いえ、合いました。 まぁプログラムの改修に改修を重ねていつの間にかトンでもソースになってたわけですが… 最初は作成したときは起動時にイベントハンドラを追加し、抜け出すときに削除するという 仕組みでした。 画面があったほうがイメージしやすいと思ったので、、作ってみました。 Formの中に汎用ボタンが4つ、右にパネルが一つあります。 Fromから次のFormへは変化せず、右のパネルが切り替わるイメージです。 表示しているパネルによって右のボタンの文言とメソッドが切り替わる仕組みです。 次ページを押すと次のパネルへ切り替わります。このとき左のボタンのイベントも切り替えます。 設計当初はパネルが切り替えるときにイベントハンドラを削除、追加する考えのもと 作られたのでそれほど問題はありませんでした。 追加、削除する場所が決まっているので頭の中で把握できてました。 ところが、パネルの切り替え時の追加、削除はそのままでパネル上のコントロール にフォーカスを移動するたびに左のボタンを変化してくれ!と仕様変更が入ったとき 何も考えず、よし!イベントハンドラを追加、削除で対応しよう!!と対応してしまい いたるところでイベントの追加、削除の処理が・・・。 プログラムの改修してたときに、アレ?いつの間にイベントハンドラが追加されている!! なんで?追加した覚えがない!!数時間かけてデバッグ作業。み、見つけた!こんなところで イベントハンドラ追加してるよ!!てなことになるので、注意したほうがいいです。 |