显示父窗体 C# 的侧边/侧边或顶部/底部
Posted
技术标签:
【中文标题】显示父窗体 C# 的侧边/侧边或顶部/底部【英文标题】:Show A Form Side/Side Or Top/Bottom Of Parent Form C# 【发布时间】:2021-09-05 04:40:43 【问题描述】:我需要将进度/状态窗口/表单放在父表单的下方或表单的左侧/右侧。
这是非常基本的事情,我知道该怎么做..(正式/基本方式)..
这是我的代码:
frmMain oTest;
oTest = new frmMain();
//oTest.FormBorderStyle = FormBorderStyle.None; (to make child form border/title bar less)
oTest.StartPosition = FormStartPosition.Manual;
oTest.Left = this.Left;
oTest.Top = this.Top + this.Height;
oTest.Width = this.Width;
oTest.ShowDialog();
但问题是它们之间有细微的差距..请检查屏幕截图..
如果我尝试将子窗体边框样式设置为无,那么外观会变得比上面更糟,但出于我的目的,我需要将子窗体边框样式设置为无。
这是该案例的屏幕截图:
据我所知,看起来 Windows 主题/样式改变了表单的可见外观,而原始尺寸比这大一点?
所以,我的问题是,无论操作系统主题如何,我如何才能使子表单与父表单大小相同?
提前致谢
【问题讨论】:
现代表单周围的阴影是表单大小的一部分。不知道该怎么办 原来的差距在我看来并不可怕。将两种形式都设置为无边框以使它们接吻。 @LarsTech,感谢您的回复先生,但出于我的需要,它看起来不太好......而且不可能减少父表单边框:( 但是如果没有无边框表单,您将无法控制边框的外观,Microsoft 会这样做,而且 Microsoft 会一直更改边框外观以及边框尺寸。 【参考方案1】:根据我的测试,我重现了您的问题。我发现表单边框宽度会影响最终结果。
您可以使用以下代码获取窗口边框宽度。
int windowBorder = (this.Width - this.ClientRectangle.Width) / 2;
完成的代码:
private void btnProcess_Click(object sender, EventArgs e)
Form1 oTest;
oTest = new Form1();
//oTest.FormBorderStyle = FormBorderStyle.None; (to make child form border/title bar less)
oTest.StartPosition = FormStartPosition.Manual;
int windowBorder = (this.Width - this.ClientRectangle.Width) / 2;
oTest.Left = this.Left;
oTest.Top = this.Top + this.Height-windowBorder;
oTest.Width = this.Width;
oTest.ShowDialog();
结果:
【讨论】:
以上是关于显示父窗体 C# 的侧边/侧边或顶部/底部的主要内容,如果未能解决你的问题,请参考以下文章