Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 表单控件不居中显示_C#_Winforms_Powershell - Fatal编程技术网

C# 表单控件不居中显示

C# 表单控件不居中显示,c#,winforms,powershell,C#,Winforms,Powershell,创建窗体并添加控件时,我将大小和位置设置为在窗体上居中。相反,我得到的东西是向右和向下偏移的 是什么导致了这种偏移 [void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic')) [void][Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms')) [void][Reflection.Assembly]::LoadWithPartia

创建窗体并添加控件时,我将大小和位置设置为在窗体上居中。相反,我得到的东西是向右和向下偏移的

是什么导致了这种偏移

[void][Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic'))
[void][Reflection.Assembly]::LoadWithPartialName('System.Windows.Forms'))
[void][Reflection.Assembly]::LoadWithPartialName('System.Drawing'))
#主要形式
$form=新对象System.Windows.Forms.form
$form.Size=[System.Drawing.Size]::新建(400500)
$form.StartPosition='CenterScreen'
$form.SizeGripStyle='Hide'
$form.MaximizeBox=$false
$form.ShowInTaskbar=$true
$form.Text='我不会正确显示。'
#控制
$mainPanel=New Object System.Windows.Forms.Panel
$mainPanel.Anchor=[System.Windows.Forms.AnchorStyles]::顶部
$mainPanel.Size=[System.Drawing.Size]::新建($form.Width-50),($form.Height-50))
$mainPanel.Location=[System.Drawing.Point]::新建(25,25)
$mainPanel.AutoScroll=$true
$mainPanel.BackColor=[System.Drawing.Color]::黑色
$form.Controls.Add($mainPanel)
$form.BringToFront()
$form.ShowDialog()
结果:


尝试以下调整:

$mainPanel.Size = [System.Drawing.Size]::new(($form.ClientSize.Width - 50),($form.ClientSize.Height - 50))
表单大小和工作空间(客户端)区域不同

  • 表单大小还包括边框大小和标题栏
  • 客户端区域是放置控件的实际空间(位置0,0)
仅更改代码中的一行以获得所需输出:

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


如果控件放置在表单的客户端区域,屏幕截图将非常有用。您需要考虑表单的整体大小,包括标题和边框。使用表单的ClientRectangle(或ClientSize)度量值来确定控件的位置。@CaiusJard为您添加了图片,尽管这已经得到了回答,以防后面的任何人好奇。同时感谢大家的快速回复!非常感谢。您能按客户人数设置主窗体吗?是否有一个属性显示clientsize和size之间的差异?clientsize始终小于窗体大小。您可以通过计算客户端大小来设置main for size,因此在最后您可以得到所需的clientsize..like frm.size.width=400;差异=frm.size.WITH-frm.cz.WITH;frm.size.width+=差异;和计算表单高度的方法一样,客户端大小取决于主题/分辨率/表单边框样式等。。因此,我们必须根据客户端大小计算表单大小。。