- ベストアンサー
フォームを画面のど真ん中に表示させる方法
- フォームを画面の真ん中に表示させる方法について説明します。
- FormStartPosition.CenterScreenfを使用すると、波線がひかれます。
- 真ん中に表示させるためにはFormStartPosition.Manualを使用し、Locationを指定します。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
Formのコード Form1.vbの中最後に Public sub new[Enter] で Form1のコンストラクタを作成します Public Sub New() ' この呼び出しは、Windows フォーム デザイナで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後で初期化を追加します。 End Sub といったスケルトンを生成します そこで Me.StartPosition = FormStartPosition.CenterScreen を『' InitializeComponent() 呼び出しの後で初期化を追加します。』の行の次に記述して見ましょう 質問される場合に 開発環境や実行環境を明記したほうがいいかもしれません 例 : WinXP PRO/SP3 VB2005 とか VB2010Express など メニューの操作など 微妙に違ったり、初期設定を変更しなくてはいけない場合などもありますので 『すべてのファイルを表示』は メインメニューの中の プロジェクトの項目にあります VB2010の場合 ツール > 設定が 基本設定になっていると 表示されません ですが ソリューションエクスプローラのツールバーの 左から2番目が それに当たります
その他の回答 (5)
- angel_Z
- ベストアンサー率66% (12/18)
SetBoundsの/2の数値を変更することで、位置が変えられますが、 Form1のプロパティのStartPositionを、CenterScreenに変更するれば、Loadに書かなくても済みますよ。 後は、No5のredfox63さんの回答で、デザイナに追加する事でできました。
お礼
回答ありがとうございました。
- angel_Z
- ベストアンサー率66% (12/18)
すいません、訂正です。 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load SetBounds((Screen.PrimaryScreen.Bounds.Width - Width) / 2, (Screen.PrimaryScreen.Bounds.Height - Height) / 2, Width, Height) End Sub
お礼
ど真ん中に表示できました! ただ、上下の真ん中には出来ないのでしょうか? TOPとか使えば可能のような気がしますが、よくわからないので教えていただけますか? 上下左右のど真ん中に表示させたいです。 ご回答よろしくお願いします。
- angel_Z
- ベストアンサー率66% (12/18)
これではどうでしょうか? Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load SetBounds((Screen.PrimaryScreen.Bounds.Width - Width) / 2, (Screen.PrimaryScreen.Bounds.Height - Height) / 2, Width, Me.Height) End Sub
お礼
上にてお礼をします。
- Yune-Kichi
- ベストアンサー率74% (465/626)
まずはデザイナで操作してみた方が良いでしょう。 すべてのファイルを表示すると,Form1.vbの下にForm1.Designer.vbというファイルが付いていて, こちらを見るとデザイナでの操作がコードで記録されています。 で…… > Dim f As New Form1() 'フォームを画面の真ん中に表示する 新しいForm1を作ってそれを画面の真ん中に表示させたいのですか。 そうでないならば,New Form1で作ったインスタンスではなく,Meでアクセスする (or 省略する) 必要があります。 # Loadイベント中でNewしてShowしたらStackOverflowExceptionが発生しそうですが。 > f.StartPosition = FormStartPosition.CenterScreenf.Show() 改行が抜けています。 f.StartPosition = FormStartPosition.CenterScreen f.Show() のように,2行に書く (or :で区切る) 必要があります。 ただ,前述のようにそもそもfに対してやる必要があるのか,という問題はあって, Loadイベントは StartPosition = FormStartPosition.CenterScreen の1行だけでよいのではないかと思います。
お礼
デザイナというもので確認しようと思ったのですが 「すべてのファイルを表示」とはどうやればいいのでしょうか? Form1.Designer.vbを表示させる方法がわかりません。 ソリューションエクスプローラーを見ましたが、Form1.Designer.vbは見つけられませんでした。 >新しいForm1を作ってそれを画面の真ん中に表示させたいのですか。 既にフォームはあるので、違います。 StartPosition = FormStartPosition.CenterScreen だけにしてみましたが、ど真ん中には表示されませんでした。 やや斜め左下に表示しされます。 Dim f As New Form1() f.StartPosition = FormStartPosition.CenterScreen f.Show() にすると、大量のフォームが開いてしまいます。 Me.StartPosition = FormStartPosition.CenterScreen Me.Show() にしても、 StartPosition = FormStartPosition.CenterScreenと同じく、やや斜め左下に表示しされました。
- Wr5
- ベストアンサー率53% (2173/4061)
>こうすると、「FormStartPosition.CenterScreenf」の部分に波線がひかれます。 なんか、余計な文字が入っていませんか? CenterScreenfではなくCenterScreenだと思われますが……。
お礼
あ!本当だ!改行されてませんでした。
お礼
回答ありがとうございました。