プロが教えるわが家の防犯対策術!

フォームを画面のど真ん中に表示させたいのですが、
http://dobon.net/vb/dotnet/form/startposition.html
を見たのですがコードの書き方がよくわかりません。

Public Class Form1

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Dim f As New Form1() 'フォームを画面の真ん中に表示する
f.StartPosition = FormStartPosition.CenterScreenf.Show()
End Sub
End Class

こうすると、「FormStartPosition.CenterScreenf」の部分に波線がひかれます。

Public Class Form1

Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
Me.StartPosition = FormStartPosition.Manual
Me.Location = New Point(0, 0)
End Sub
End Class

これで左は時に表示する事は出来るのですが、真ん中に表示させるにはどうすればいいでしょうか?

A 回答 (6件)

SetBoundsの/2の数値を変更することで、位置が変えられますが、



Form1のプロパティのStartPositionを、CenterScreenに変更するれば、Loadに書かなくても済みますよ。

後は、No5のredfox63さんの回答で、デザイナに追加する事でできました。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2013/01/25 19:33

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番目が それに当たります
    • good
    • 0
この回答へのお礼

回答ありがとうございました。

お礼日時:2013/01/25 19:33

すいません、訂正です。



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
    • good
    • 0
この回答へのお礼

ど真ん中に表示できました!
ただ、上下の真ん中には出来ないのでしょうか?
TOPとか使えば可能のような気がしますが、よくわからないので教えていただけますか?
上下左右のど真ん中に表示させたいです。
ご回答よろしくお願いします。

お礼日時:2013/01/16 21:30

これではどうでしょうか?



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
    • good
    • 0
この回答へのお礼

上にてお礼をします。

お礼日時:2013/01/16 21:29

まずはデザイナで操作してみた方が良いでしょう。


すべてのファイルを表示すると,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行だけでよいのではないかと思います。
    • good
    • 0
この回答へのお礼

デザイナというもので確認しようと思ったのですが
「すべてのファイルを表示」とはどうやればいいのでしょうか?
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と同じく、やや斜め左下に表示しされました。

お礼日時:2013/01/15 19:03

>こうすると、「FormStartPosition.CenterScreenf」の部分に波線がひかれます。



なんか、余計な文字が入っていませんか?
CenterScreenfではなくCenterScreenだと思われますが……。
    • good
    • 0
この回答へのお礼

あ!本当だ!改行されてませんでした。

お礼日時:2013/01/15 18:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています