10

VB.NET でフォームを配置するための組み込み機能は、必ずしも使用に適しているとは限らないため、サブを作成してそれを実行しようとしています。

しかし、私は何かを逃した...

Public Sub form_center(ByVal frm As Form, Optional ByVal parent As Form = Nothing)

    Dim x As Integer
    Dim y As Integer
    Dim r As Rectangle

    If Not parent Is Nothing Then
        r = parent.ClientRectangle
        x = r.Width - frm.Width + parent.Left
        y = r.Height - frm.Height + parent.Top
    Else
        r = Screen.PrimaryScreen.WorkingArea
        x = r.Width - frm.Width
        y = r.Height - frm.Height
    End If

    x = CInt(x / 2)
    y = CInt(y / 2)

    frm.StartPosition = FormStartPosition.Manual
    frm.Location = New Point(x, y)
End Sub

このサブが定義されている場合、画面または他のフォームの中央にフォームを正しく配置するにはどうすればよいですか?

4

5 に答える 5

37

これは古い投稿であり、質問に直接答えるものではないことはわかっていますが、このスレッドに出くわした他の人にとっては、独自の手順を作成する必要なく、フォームを中央に配置するだけで簡単に実行できます.

System.Windows.Forms.Form.CenterToScreen()と を使用する System.Windows.Forms.Form.CenterToParent()と、必要に応じて、画面を参照してフォームを中央に配置するか、親フォームを参照してフォームを中央に配置できます。

注意すべきことの 1 つは、フォームが読み込まれる前に、これらのプロシージャを呼び出す必要があることです。form_load イベント ハンドラーでそれらを呼び出すことをお勧めします。

例コード:

  Private Sub Settings_Load(sender As Object, e As EventArgs) Handles Me.Load

    Me.CenterToScreen()

    'or you can use 

    Me.CenterToParent()

End Sub
于 2015-05-12T18:46:17.850 に答える
8

これも役立つかもしれません:

    myForm.StartPosition = FormStartPosition.CenterParent
    myForm.ShowDialog()

FormStartPosition.CenterScreen も使用できます

于 2014-09-30T17:21:44.120 に答える
0

仕事ができないという問題がStartPosition = CenterParentありました。.ShowDialog()の代わりにフォームを呼び出して解決しました.Show()

' first you should set your form's Start Position as Center Parent
Private Sub button_Click(sender As Object, e As EventArgs) Handles button.Click
    MyForm.ShowDialog()
End Sub
于 2016-09-17T14:09:38.647 に答える