|
■No78033 (NOVO さん) に返信 > 作った時は確か「WINDOWSフォーム」ってので作ったと思います
了解です。であれば、先の回答の「System.Windows.Forms だとしたら」以降が該当しますね。
新規プロジェクト作成時に、プロジェクト テンプレートが幾つかあったと思いますが、 選択したものによって、使用可能なクラスが異なってきます。
各プロジェクトの違いをまだ把握していない状態であれば、今回のように、 「どのテンプレートを使って開発しているのか」を伝えて頂ければ、 利用可能なライブラリを回答側で汲み取って回答することができます。
> 回答の頂いた > 「System.Windows.Forms だとしたら、SystemInformation.ScreenOrientation で > 画面の向きを取得できます。」 > でいけるとは思うのですが > この記述、どこ見書けばいいのでしょうか? > コレを各画面に入れたら回転しなくなるのでしょうか?
「回転しなくなる」のではなく、上記に書いたように 「画面の向きを取得できる」だけです。
取得できた情報をどのように扱うのかは貴方次第。
画面の向きが変わっていたら、メッセージを出して向きを戻すよう案内するのか。 画面の向きに応じて、画面レイアウトを調整するようにするのか、 強制的に画面の向きを復元するのか。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click If SystemInformation.ScreenOrientation = ScreenOrientation.Angle0 Then Label1.Text = "標準表示" ElseIf SystemInformation.ScreenOrientation = ScreenOrientation.Angle180 Then Label1.Text = "180度回転" ElseIf SystemInformation.ScreenOrientation = ScreenOrientation.Angle90 Then Label1.Text = "左90度回転" ElseIf SystemInformation.ScreenOrientation = ScreenOrientation.Angle270 Then Label1.Text = "右90度回転" Else Label1.Text = "ここには来ないはず…" End If End Sub
上記のコードのように、ボタンを押したときに処理を行うのではなく、 回転された場合(というよりは、画面設定が変更されたとき)に処理を行うには、 >> 回転が行われた時に処理を行いたいというのであれば、Microsoft.Win32.SystemEvents の >> DisplaySettingsChanging / DisplaySettingsChanged イベントが使えます。 を試してみてください。イベントの割り当て方が分からない場合は、MSDN ライブラリで 上記のイベント名を調べれば、具体的なサンプルも掲載されています。
強制的に画面の向きを変更する方法については、相手が Windows CE(PocketPC 等)なら SystemSettings.ScreenOrientation プロパティに指定するだけで良いみたいですが、 デスクトップアプリの場合は該当クラスが提供されていないようです。 恐らくは、ChangeDisplaySettings API を呼び出さないと対応できないでしょう。
画面の回転を禁止する方法については、 前回も書いたように情報を持ち合わせていません。
|