none
起動時に画面いっぱいに表示する方法 RRS feed

  • 質問

  • 起動時にメイン画面モニターいっぱいに表示する方法分からないので教えてください

    プロパティかなとは思っているのですが見つかりませんでした。

    よろしくお願いします。

    2008年2月3日 21:28

回答

  •  牧牧 さんからの引用

    画面いっぱいに表示というのはしたのタスクバーも隠してしまうということです

    自分のパソコンだとできたのですがほかの人のだとできませんでした。

    「タスクバーをほかのウィンドウの手前に表示する」の設定の差じゃありませんか?

    (タスクバーを右クリックしてプロパティで出てくる設定です)

     

    この設定を書き換えても良いのであれば、次のような情報はありました。

    http://homepage1.nifty.com/MADIA/vb/vb_bbs/200309/200309_03090027.html

     

    他にも「タスクバー 非表示」あたりで検索すればちらほら。

     

    そもそも、なぜ、タスクバーより手前に表示したいのですか?

    ユーザが設定している「タスクバーをほかのウィンドウの手前に表示する」という設定を踏みにじることになりますが、必要なのでしょうか?

    2008年2月15日 14:17
    モデレータ
  • Windows API の ChangeDisplaySettings を使い、CDS_FULLSCREEN フラグを設定します。

    ただし、適切なパラメータの設定するための情報収集、アプリケーションのウインドウサイズの設定、画面解像度の変更の監視、アプリケーション終了後の後始末など、使い方は単純ではありません。

    用途によっては、DirectX を使ったほうが簡単になると思います。

    2008年2月15日 15:07
  • フォーム起動時、つまりフォームの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

    2008年2月18日 2:40
  • 起動を「ウインドウ」という形ではなく、「スクリーンセーバー」としてみてはどうでしょうか。マウスを動かして終了するコードを書かなければ、普通のフォームと同じように使用できると思います。

    フォームの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

     

     

    と書くと、タスクバーも表示されなくなります。

    2008年2月25日 9:17
  • タスクバーを除いたエリアをWorkingAreaと言って、タスクバーが上や左にあると、座標原点(0,0)がずれます。

    フォームの最大化サイズもWorkingAreaに対して最大化されるので、その分スクリーンサイズより小さくなります。

    (通常のアプリはそのおかげでタスクバーに被らずにすみます。)

    まず、タスクバー分の座標を引いて、スクリーンの左上を(0,0)としましょう。

    そして、フォームのサイズにはスクリーンのサイズ(幅、高さ)を設定しましょう。

    最後に、フォームを最前面に表示。

    そうすると、タスクバーがどこにあろうとフォームがモニターいっぱいに表示されます。

     

    Code Snippet

            Dim 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

     

    2008年3月22日 3:48

すべての返信

  •  牧牧 さんからの引用

    起動時にメイン画面モニターいっぱいに表示する方法分からないので教えてください

    「最大化」であれば、WindowStateプロパティで設定してください。

    http://msdn2.microsoft.com/ja-jp/library/system.windows.forms.form.windowstate.aspx

     

    これだけでは目的を満たせない場合は、もう少し細かい説明をお願いします。

    2008年2月3日 22:28
    モデレータ
  • こんにちは。中川俊輔 です。

     

    Azuleanさん、大変参考になる回答ありがとうございます。

     

    牧牧さん、フォーラムのご利用ありがとうございます。

    その後いかがでしょうか?

    問題解決に有用な回答のようでしたので、

    勝手ながらAzuleanさんの回答へ回答済みチェックをつけさせていただきました。

    追加の質問等あれば是非投稿してください!

     

    問題解決につながる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

    牧牧さんはチェックを解除することもできますので、ご確認ください。

     

    それでは!

     

    2008年2月14日 5:17
  •  

    説明不足でした

    画面いっぱいに表示というのはしたのタスクバーも隠してしまうということです

    自分のパソコンだとできたのですがほかの人のだとできませんでした。

    2008年2月15日 14:03
  •  牧牧 さんからの引用

    画面いっぱいに表示というのはしたのタスクバーも隠してしまうということです

    自分のパソコンだとできたのですがほかの人のだとできませんでした。

    「タスクバーをほかのウィンドウの手前に表示する」の設定の差じゃありませんか?

    (タスクバーを右クリックしてプロパティで出てくる設定です)

     

    この設定を書き換えても良いのであれば、次のような情報はありました。

    http://homepage1.nifty.com/MADIA/vb/vb_bbs/200309/200309_03090027.html

     

    他にも「タスクバー 非表示」あたりで検索すればちらほら。

     

    そもそも、なぜ、タスクバーより手前に表示したいのですか?

    ユーザが設定している「タスクバーをほかのウィンドウの手前に表示する」という設定を踏みにじることになりますが、必要なのでしょうか?

    2008年2月15日 14:17
    モデレータ
  • Windows API の ChangeDisplaySettings を使い、CDS_FULLSCREEN フラグを設定します。

    ただし、適切なパラメータの設定するための情報収集、アプリケーションのウインドウサイズの設定、画面解像度の変更の監視、アプリケーション終了後の後始末など、使い方は単純ではありません。

    用途によっては、DirectX を使ったほうが簡単になると思います。

    2008年2月15日 15:07
  • フォーム起動時、つまりフォームの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

    2008年2月18日 2:40
  • 起動を「ウインドウ」という形ではなく、「スクリーンセーバー」としてみてはどうでしょうか。マウスを動かして終了するコードを書かなければ、普通のフォームと同じように使用できると思います。

    フォームの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

     

     

    と書くと、タスクバーも表示されなくなります。

    2008年2月25日 9:17
  • タスクバーを除いたエリアをWorkingAreaと言って、タスクバーが上や左にあると、座標原点(0,0)がずれます。

    フォームの最大化サイズもWorkingAreaに対して最大化されるので、その分スクリーンサイズより小さくなります。

    (通常のアプリはそのおかげでタスクバーに被らずにすみます。)

    まず、タスクバー分の座標を引いて、スクリーンの左上を(0,0)としましょう。

    そして、フォームのサイズにはスクリーンのサイズ(幅、高さ)を設定しましょう。

    最後に、フォームを最前面に表示。

    そうすると、タスクバーがどこにあろうとフォームがモニターいっぱいに表示されます。

     

    Code Snippet

            Dim 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

     

    2008年3月22日 3:48
  • こんにちわ。森田 知良です。
    みなさんフォーラムのご利用ありがとうございます。

     

    回答をくださったみなさん、有用な情報ありがとうございました。

     

    牧牧さん、その後いかがでしょうか?

    私の方で投稿してくださったみなさんの情報は、有用な情報と判断しましたので、

    勝手ながら回答済みチェックを付けさせていただきました。

    追加の質問がある場合は、是非もう一度投稿してくださるようお願いします。

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    有効な回答があった場合は、なるべく回答済みボタンを押してチェックを付けてくださるようお願いします。

    なお牧牧さんの意図しない回答にチェックが付いていた場合は、回答済みチェックを解除することもできますのでご確認ください。


    それでは、これからもフォーラムのご利用をよろしくお願いいたします

    2008年4月2日 5:35
  • 同様の問題で困っており、このコードを導入し、試しにデバッグ実行してみましたが、画面描画が中途半端なまま終了してしまい、操作を一切受け付けなくなりました。

    他のアプリケーションに切り替えることもできない、デバッグを中断することすらできないような有様です。

    2019年2月5日 1:32
  • お手数ですが、新しい質問として投稿していただくと、回答やアドバイス等が付くかもしれません。

    その時に、ここの質問のリンクを載せて、現象が再現できるコードと、ゆぱぱ 様の環境(OS、Visual Studio や .NET Framework のバージョン等)を記載していただくと、何か分かるかもしれません。
    2019年2月5日 7:54