Windows Mobile の画面方向切り替え
少しずつ .NET Compact Framework 2.0 での Windows Mobile 向けアプリケーション開発の勉強などをし始めています。
とりあえず、簡単なタイマーの作成を最初の目標に掲げて頑張ろうと云う事で、色々調べていてちょっと気になったので備忘録として。
掲題の件をググってみると、 Form.Resize イベントで縦横のサイズをチェックして Portrait (縦長)と Landscape (横長)を判断する、と云うのがセオリーみたく書かれているのですが、もっとスマートにやる方法がありそうです。
↑の DisplayRotation を使えば、縦横が変更された際のイベントをフックできます。
public partial class Form1 { SystemState state; public Form1() { InitializeComponent(); // DisplayRotation の状態をチェックする SystemState を作る state = new SystemState(SystemProperty.DisplayRotation); // Changed イベントの登録( DisplayRotation の値が変更されたタイミングで呼ばれる) state.Changed += new ChangeEventHandler(this.ChangeDisplayRotation); } private void ChangeDisplayRotation(object sender, ChangeEventArgs e) { // [static] SystemState.DisplayRotation の値は、 Portrait のときは 0 、 Landscape のときは 90 or -90 になる if (SystemState.DisplayRotation == 0) { // Portrait の表示処理(コンポーネントの配置、サイズ変更等) } else { // Landscape の表示処理(コンポーネントの配置、サイズ変更等) } } }
ちなみに、実機をつなげられる環境が手元になかったので、エミュレータでの動作検証しかしていません。