Standard版とProfessional版対応のボタンをつくる。
最近、プログラム関連の話を書いてなかったので少し書いてみる。
私は単一バイナリでWindowsMobile用のStandard版とProfessional版対応のプログラムにしようとしているのだけれども、そうするといくつか使えないコントロールが出て困る次第。
たとえばボタン。まあ、Standard版ではそもそも画面のボタンとか押せないので意味無いのだけども、Professional版の方はあった方が便利なケースもある。なので、両対応プログラムとしては付けたい。けど、ボタン付けるとうまく動かなかったりして困る*1。
でも、moneymemoにはボタン(のようなもの)があったりする(数値入力パネルを使用するようにしているとき、金額入力欄に入ると画面にボタン(のようなもの)が表示される)。
どうやっているか、というとパネルとラベルを使っている。
パネルはクリックできる(正確には、クリックのイベントに対する処理を書ける)。
だけど、Standard版で'System.NotSupportedException'はでない。
でありながら、Professional版デバイスでクリックする事ができるもの、でもある。
まさに、私の用途に合致するものである。
Panelだけだと見栄えがしないので、Dock=Fillしたラベルをその中に置く。すると、文字も表示できる。
一応、MouseUpとMouseDownを組み合わせることで、ボタンが押されているときだけボタンの色を変える、ような事も可能。
関係ないけど、こういう事を組み合わせながらやっていると、プログラムというより、パズルやってるような感覚だったりする。VS.NETとかくらい楽だと、もう本当にパズル。
以上、小技の紹介でした。
*1:'System.NotSupportedException'が出る