элемент управления формы не отображается по центру - PullRequest
0 голосов
/ 06 июня 2019

Когда я создаю форму и добавляю элемент управления, я устанавливаю размер и расположение по центру формы. Вместо этого я получаю то, что смещено вправо и вниз.

Что вызывает это смещение?!

[void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')
[void][Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')
[void][Reflection.Assembly]::LoadWithPartialName('System.Drawing')

# Main form
$form = New-Object System.Windows.Forms.Form
$form.Size = [System.Drawing.Size]::new(400,500)
$form.StartPosition = 'CenterScreen'
$form.SizeGripStyle = 'Hide'
$form.MaximizeBox = $false
$form.ShowInTaskbar = $true
$form.Text = 'I wont display right.'

#control
$mainPanel = New-Object System.Windows.Forms.Panel
$mainPanel.Anchor = [System.Windows.Forms.AnchorStyles]::Top
$mainPanel.Size = [System.Drawing.Size]::new(($form.Width - 50),($form.Height - 50))
$mainPanel.Location = [System.Drawing.Point]::new(25,25)
$mainPanel.AutoScroll = $true
$mainPanel.BackColor = [System.Drawing.Color]::Black
$form.Controls.Add($mainPanel)

$form.BringToFront()
$form.ShowDialog()

Результат:

enter image description here

Ответы [ 2 ]

1 голос
/ 06 июня 2019

Размер формы и рабочая область (клиент). Область различна.

  • Размер формы также включает в себя размер границы и строку заголовка.
  • Клиентская зона - это фактическое пространство, в которое вы помещаете свои элементы управления (местоположение 0,0).

измените только одну строку в вашем коде, чтобы получить желаемый результат:

$ mainPanel.Size = [System.Drawing.Size] :: new (($ form.ClientSize.Width - 50), ($ form.ClientSize.Height - 50))

0 голосов
/ 06 июня 2019

Попробуйте выполнить следующую настройку:

$mainPanel.Size = [System.Drawing.Size]::new(($form.ClientSize.Width - 50),($form.ClientSize.Height - 50))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...