トップ回答者
起動時に画面いっぱいに表示する方法

質問
回答
-
牧牧 さんからの引用 画面いっぱいに表示というのはしたのタスクバーも隠してしまうということです
自分のパソコンだとできたのですがほかの人のだとできませんでした。
「タスクバーをほかのウィンドウの手前に表示する」の設定の差じゃありませんか?
(タスクバーを右クリックしてプロパティで出てくる設定です)
この設定を書き換えても良いのであれば、次のような情報はありました。
http://homepage1.nifty.com/MADIA/vb/vb_bbs/200309/200309_03090027.html
他にも「タスクバー 非表示」あたりで検索すればちらほら。
そもそも、なぜ、タスクバーより手前に表示したいのですか?
ユーザが設定している「タスクバーをほかのウィンドウの手前に表示する」という設定を踏みにじることになりますが、必要なのでしょうか?
-
フォーム起動時、つまりフォームのLoadイベントに下記を書いて置けばよいですよ。
WindowStateプロパティで最大化する場合、タスクバーが常に手前だと、タスクバーを隠すまでにはならないようです。 従って、フォームサイズをスクリーンサイズに合わせるのですが、TopMostプロパティの設定も必要です。 こういうのをお勧めして良いかどうか分かりません。
しかし、自分のPCはこうだったが他人のPCは別の状態だった、という程度なら、単にWindowsのタスクバープロパティを変えるだけの問題という気もします。 その場合なら、プログラム側で何らの変更も不要ですね。
'- Me.WindowState = FormWindowState.Maximized
Me.TopMost = True
Me.Top = 0
Me.Left = 0
Me.Height = My.Computer.Screen.Bounds.Height
Me.Width = My.Computer.Screen.Bounds.Width -
起動を「ウインドウ」という形ではなく、「スクリーンセーバー」としてみてはどうでしょうか。マウスを動かして終了するコードを書かなければ、普通のフォームと同じように使用できると思います。
フォームのLoadイベントに.
Code Snippet''メイン フォームを全画面スクリーン セーバーとして設定します。
' ダブル バッファを使用して、表示パフォーマンスを改善します。
Me.SetStyle(ControlStyles.OptimizedDoubleBuffer Or ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint, True)' アプリケーションを全画面表示モードに設定ます。
Bounds = Screen.PrimaryScreen.Bounds
WindowState = FormWindowState.Maximized
ShowInTaskbar = False
DoubleBuffered = Trueと書くと、タスクバーも表示されなくなります。
-
タスクバーを除いたエリアをWorkingAreaと言って、タスクバーが上や左にあると、座標原点(0,0)がずれます。
フォームの最大化サイズもWorkingAreaに対して最大化されるので、その分スクリーンサイズより小さくなります。
(通常のアプリはそのおかげでタスクバーに被らずにすみます。)
まず、タスクバー分の座標を引いて、スクリーンの左上を(0,0)としましょう。
そして、フォームのサイズにはスクリーンのサイズ(幅、高さ)を設定しましょう。
最後に、フォームを最前面に表示。
そうすると、タスクバーがどこにあろうとフォームがモニターいっぱいに表示されます。
Code SnippetDim ScreenBounds As Rectangle = My.Computer.Screen.Bounds
Dim ScreenWorkingArea As Rectangle = My.Computer.Screen.WorkingArea
Dim ScreenMax As New Rectangle(ScreenBounds.X - ScreenWorkingArea.X, ScreenBounds.Y - ScreenWorkingArea.Y, ScreenBounds.Width, ScreenBounds.Height)Me.DesktopBounds = ScreenMax
Me.TopMost = True
すべての返信
-
牧牧 さんからの引用 起動時にメイン画面モニターいっぱいに表示する方法分からないので教えてください
「最大化」であれば、WindowStateプロパティで設定してください。
http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.form.windowstate.aspx
これだけでは目的を満たせない場合は、もう少し細かい説明をお願いします。
-
牧牧 さんからの引用 画面いっぱいに表示というのはしたのタスクバーも隠してしまうということです
自分のパソコンだとできたのですがほかの人のだとできませんでした。
「タスクバーをほかのウィンドウの手前に表示する」の設定の差じゃありませんか?
(タスクバーを右クリックしてプロパティで出てくる設定です)
この設定を書き換えても良いのであれば、次のような情報はありました。
http://homepage1.nifty.com/MADIA/vb/vb_bbs/200309/200309_03090027.html
他にも「タスクバー 非表示」あたりで検索すればちらほら。
そもそも、なぜ、タスクバーより手前に表示したいのですか?
ユーザが設定している「タスクバーをほかのウィンドウの手前に表示する」という設定を踏みにじることになりますが、必要なのでしょうか?
-
フォーム起動時、つまりフォームのLoadイベントに下記を書いて置けばよいですよ。
WindowStateプロパティで最大化する場合、タスクバーが常に手前だと、タスクバーを隠すまでにはならないようです。 従って、フォームサイズをスクリーンサイズに合わせるのですが、TopMostプロパティの設定も必要です。 こういうのをお勧めして良いかどうか分かりません。
しかし、自分のPCはこうだったが他人のPCは別の状態だった、という程度なら、単にWindowsのタスクバープロパティを変えるだけの問題という気もします。 その場合なら、プログラム側で何らの変更も不要ですね。
'- Me.WindowState = FormWindowState.Maximized
Me.TopMost = True
Me.Top = 0
Me.Left = 0
Me.Height = My.Computer.Screen.Bounds.Height
Me.Width = My.Computer.Screen.Bounds.Width -
起動を「ウインドウ」という形ではなく、「スクリーンセーバー」としてみてはどうでしょうか。マウスを動かして終了するコードを書かなければ、普通のフォームと同じように使用できると思います。
フォームのLoadイベントに.
Code Snippet''メイン フォームを全画面スクリーン セーバーとして設定します。
' ダブル バッファを使用して、表示パフォーマンスを改善します。
Me.SetStyle(ControlStyles.OptimizedDoubleBuffer Or ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint, True)' アプリケーションを全画面表示モードに設定ます。
Bounds = Screen.PrimaryScreen.Bounds
WindowState = FormWindowState.Maximized
ShowInTaskbar = False
DoubleBuffered = Trueと書くと、タスクバーも表示されなくなります。
-
タスクバーを除いたエリアをWorkingAreaと言って、タスクバーが上や左にあると、座標原点(0,0)がずれます。
フォームの最大化サイズもWorkingAreaに対して最大化されるので、その分スクリーンサイズより小さくなります。
(通常のアプリはそのおかげでタスクバーに被らずにすみます。)
まず、タスクバー分の座標を引いて、スクリーンの左上を(0,0)としましょう。
そして、フォームのサイズにはスクリーンのサイズ(幅、高さ)を設定しましょう。
最後に、フォームを最前面に表示。
そうすると、タスクバーがどこにあろうとフォームがモニターいっぱいに表示されます。
Code SnippetDim ScreenBounds As Rectangle = My.Computer.Screen.Bounds
Dim ScreenWorkingArea As Rectangle = My.Computer.Screen.WorkingArea
Dim ScreenMax As New Rectangle(ScreenBounds.X - ScreenWorkingArea.X, ScreenBounds.Y - ScreenWorkingArea.Y, ScreenBounds.Width, ScreenBounds.Height)Me.DesktopBounds = ScreenMax
Me.TopMost = True
-
こんにちわ。森田 知良です。
みなさんフォーラムのご利用ありがとうございます。回答をくださったみなさん、有用な情報ありがとうございました。
牧牧さん、その後いかがでしょうか?
私の方で投稿してくださったみなさんの情報は、有用な情報と判断しましたので、
勝手ながら回答済みチェックを付けさせていただきました。
追加の質問がある場合は、是非もう一度投稿してくださるようお願いします。
回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
有効な回答があった場合は、なるべく回答済みボタンを押してチェックを付けてくださるようお願いします。なお牧牧さんの意図しない回答にチェックが付いていた場合は、回答済みチェックを解除することもできますのでご確認ください。
それでは、これからもフォーラムのご利用をよろしくお願いいたします