FormBorderStyle为NONE时的表单高度问题

2024-04-16

我有一个无边框表单(FormBorderStyle = None),高度为23像素(在设计器中设置)

当 .NET 在运行时绘制我的表单时 - 它会绘制它38像素高(由于某种原因它增加了标题栏的高度)。

MessageBox.Show(this.Height.ToString()); //this shows 38!! why?

为了解决这个问题,我必须设置“Height = 23;”在 Form_Load 事件中。

private void MyForm_Load(object sender, EventArgs e)
{
    this.Height = 23; //workaround. wtf??
}

您可以在 Visual Studio 2010(Winforms 应用程序,目标框架 - 2.0)中自行尝试。

Wtf?


是的,这是一个错误。请注意在设计器中如何使用“宽度”和“高度”属性设置表单的大小。这些属性包括边框和标题栏的大小。然而,这是一个问题,您的表单可能会在用户增加了标题栏字体大小的计算机上运行。这样就会减少窗口客户区的大小。或者换句话说,表单的 ClientSize 属性将在该计算机上发生更改。为控件留下的空间更少,并且严重扰乱了表单的设计。

Form 类中有运行的代码afterHandle 是在 Load 事件运行之前创建的。它使用您计算机上的相同 ClientSize 重新计算表单的大小。现在一切都很好,表单的高度与您在设计器中设置的高度不匹配,但表单在其他方面看起来相同,并且控件的布局也相同。

相同的代码还确保窗口不会变得太小。这就是它失败的地方,它没有对 FormBorderStyle 属性给予足够的关注。正如您所发现的,将高度剪裁为标题栏大小加上客户区高度。它还可以防止表单变得太窄,试图确保图标和最小/最大/关闭按钮始终可见。即使你没有。

解决方法是在此代码运行后更改 ClientSize,OnLoad 重写或 Load 事件处理程序是正确的位置。请注意,如果您像这样硬编码表单大小,那么您还应该将 AutoScaleMode 属性设置为 None。确保这不会在具有不同 DPI 设置的计算机上造成问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FormBorderStyle为NONE时的表单高度问题 的相关文章

  • 在组件上画线

    我有一个包含 2 列的表 在其中一列中我有一个由我创建的组件 我想在此表中画一条线放在前面 但是当我尝试使用我发布的代码时 该线位于我创建的其他组件后面 public void CoTableLayoutPanel2 Paint objec
  • 将 dataGridView 绑定到绑定列表并按文本框过滤行

    我正在开发一个 Winforms 应用程序 并且有一个已经绑定到 dataGridView 的对象的 BindingList 我还有一个 过滤器 文本框 如果它们与文本框文本不匹配 我想从 datagridview 行中过滤掉行 我想以某种
  • C# 多线程 - 在线程之间移动对象

    我正在使用一个 winforms 控件 它既是一个 GUI 元素 又执行一些尚未向开发人员公开的内部处理 当这个组件被实例化时 可能需要 5 到 15 秒的时间才能准备好 所以我想做的就是将它放在另一个线程上 完成后将其带回 gui 线程并
  • 使用 TextBox 过滤 Datagridview 行

    我有一个绑定的 datagridView 我想使用 TextBox 值对其进行过滤 我使用了这段代码 private void ChercheStextBox TextChanged object sender EventArgs e tr
  • DataGridView:如何让回车键添加新行而不是更改当前单元格?

    如何让 Enter 键在 Winforms 中起作用DataGridViewTextBoxCell就像在普通 Winform 中一样TextBox 向文本添加新行 而不是更改当前单元格 嗯 我知道如何解决这个问题了 首先 创建一个类 名为C
  • 在运行时更改 appconfig

    我正在尝试使用以下代码在运行时更新 appconfig 文件 我没有收到错误 但它没有更新我的配置文件 System Configuration Configuration config ConfigurationManager OpenE
  • C# 中 WinForm TextBox 中数字的按键事件

    我想限制用户在文本框中仅输入数字 我在按键事件中添加此代码 private void txtPartID KeyPress object sender KeyPressEventArgs e if e KeyChar gt 0 e KeyC
  • C# 使用 HttpWebRequest 在 POST 中转义加号 (+)

    我在发送密码字段中包含 等字符的 POST 数据时遇到问题 string postData String Format username 0 password 1 anyname 13Gt2 我正在使用 HttpWebRequest 和网络
  • 如果你想在 datagridview 中显示图像,winform .net 最好的方法

    net web 开发人员 通常不制作任何 win32 应用程序 但现在我必须这样做 我有一个大约有 2000 个条目的列表 每个条目应显示为带有文本框的标签 另一个标签和图片 我用 flowlayoutpanel 做了这个 我对条目做了 f
  • 将大数据集加载到 GridView 中的最快方法是什么?

    我有一个数据源 其中包含 1 4 数百万行 并且还在不断增长 我们让用户添加过滤器来减少调用的数据 但您仍然一次查看 43 000 到 100 000 行 在任何人说之前 无论如何没有人可以查看那么多行 它们将被导出到 Excel 工作簿中
  • Visual Studio 2010 设计器运行时出错

    我正在使用 VS2010 如果我在设计器模式下打开一个表单并运行我的应用程序 设计器选项卡将不再显示表单设计器 而是会显示一个错误 并且只能通过重新启动 IDE 来修复 为了防止在加载设计器之前可能发生的数据丢失 必须解决以下错误 1 Er
  • WinForms 本地化。该语言不反映默认的 resx 文件

    我正在尝试在 winform 应用程序中使用本地化 但有几个问题 我本想问最复杂的问题 但现在我遇到了一个基本问题 我已经构建了一个带有表单 标签和菜单条的基本 winform 我已将表单本地化设置为 true 并将标签文本设置为三种不同的
  • 设置表单的父级

    我有一个 Windows 表单 我想从中打开一个状态表单 上面写着 正在保存 然后保存完成后消失 我想将这个小状态表单放在调用表单的中间 我尝试将 StartPosition 属性设置为 CenterParent 但它不起作用 我从其他表单
  • 将现有表单添加到 C++/CLI WinForms 项目

    我在不同的解决方案中有两个 C CLI 项目 A 和 B 我使用 A 进行实验 测试 并在完成测试后将测试的代码移至 B 但是 我发现在将 Windows 窗体类 标头 cpp 和 resx 添加到项目 B 时 我无法再使用 IDE 的可视
  • 为什么最后一个关闭的 MDI 子窗体没有被垃圾回收?

    我们的应用程序中存在内存泄漏问题 我已成功通过以下简单示例复制了其中一个问题 复制设置 1 创建以下辅助类 用于跟踪对象创建 销毁 public class TestObject public static int Count get se
  • Winforms 风格/UI 外观和感觉提示

    从多年的 asp net 开发回到 winforms 应用程序 寻找有关如何 设计 winforms 的建议和技巧 类似于我在 asp net 中使用 CSS 母版页的方式 我对如何在一处更新某些类型的控件的字体 颜色感兴趣 如何保持布局的
  • 使用对话框周围的语句来确保垃圾收集

    我们有一个包含数千个表单的 Windows 窗体应用程序 其中许多通过 ShowDialog 方法临时显示为对话框 该应用程序已经存在多年 我们发现由于表单或其使用的控件中的各种资源泄漏 许多表单没有及时进行垃圾收集 具体来说 我们发现了未
  • 为什么 Application.Exit 无法工作?

    我有一个应用程序在取消对话框时出现奇怪的错误 如果该框被取消 应用程序将无法继续 因此它会退出 但由于某种原因它无法工作 因此它会继续运行并崩溃 我调试了这个问题 并且不知何故应用程序在 Application Exit 调用之后运行 我正
  • 如何防止控件在 TableLayoutPanel 内调整大小时视觉上滞后?

    我有一个基于多个嵌套的中等复杂度的布局TableLayoutPanels 调整窗体大小会导致更深嵌套表内的控件在视觉上滞后于调整大小 首先 这使得它们看起来像是在调整表单大小时四处移动 但更糟糕的是 当它们滞后到足以离开分配的表格单元格时
  • 将组合框添加到 DataGridView 标头

    当我运行代码时 dataGridView TopLeftHeaderCell 也有一个组合框 我怎样才能改变这一点 这是我的代码 public void AddHeaders DataGridView dataGridView for in

随机推荐

  • OpenGL ES 像素艺术 - 缩放

    我在 iPhone 上的 OpenGL Es 1 1 上显示基于像素的艺术 想想复古瓷砖和艺术 时遇到问题 图块使用 8 个字节 每行 1 个字节 表示 每一位代表一个像素是否被设置 例如数字为 8 的图块 0 0 0 0 0 0 0 0
  • 企业内部应用程序分发

    我正在为一家公司开发 iPad 应用程序 由于保密原因 他们不想将应用程序发布到应用程序商店 他们满足企业计划要求 但尚未参与 该公司想知道分销流程是怎样的 我已经深入苹果文档丛林 我对配置文件有点困惑 由于保密原因 我想使用带有配置文件的
  • 创建规则来限制sql server表中的特殊字符

    我想创建一条规则来限制在列中输入特殊字符 我已经尝试过以下方法 但这没有用 CREATE RULE rule spchar AS make LIKE lt gt 我不知道我在这里做错了什么 任何帮助 将不胜感激 您可以创建一个Check C
  • Python、Brew 和 MySQLdb

    我一直在通过brew安装运行python 我用安装工具安装了 mysql python Egg 根据 mysql python 说明进行标准安装 并将其安装到 usr local lib python2 7 site packages 处理
  • USB接口条码扫描器

    不完全是一个编程问题 但很接近 无论如何我都会试试运气 The 键盘楔子 扫码机插入 读者之间的翻译装置 和键盘 数据发送通过 楔形看起来就像是被输入的 电脑 而键盘 本身仍保持完整功能 因为电脑使用键盘 楔子无法区分 在输入的数据之间 扫
  • 为什么reinterpret_cast不是constexpr?

    考虑以下片段 static constexpr uint8 t a 0 static constexpr const int8 t b reinterpret cast
  • 由 pandoc 从 .md 转换而来的 Beamer 幻灯片中的绘图非常大

    R 生成的正态图chunksR 中的 Markdown 文件在转换为 html 幻灯片或 pdf 时完全相同 但是 当它们通过以下方式转换为投影仪幻灯片时pandoc t beamer ex md V theme Warsaw o beam
  • SVG路径定位

    我正在制作脸部 SVG 无法将眉毛固定在正确的位置 请指教
  • Ado.Net 实体:对象不显示链接成员(外键)

    我有一个简单的数据库方案 用户 帐户 用户与帐户具有一对多关系 我已经生成了 ado net 实体数据模型 我可以创建用户和帐户 甚至可以将它们链接在一起 在数据库中 account user id 已正确填写 因此理论上我应该能够通过实体
  • 具有 DNS 验证的证书陷入待验证状态

    我已将我的域转移到 Route53 并且我希望 Amazon Certificate Manager 为该域颁发证书 我按照控制台中的步骤颁发证书 确实出现了 在 Route53 中创建记录 按钮 我确实按它 它说 成功 我确实看到在 Ro
  • 如何在numpy中设置最大输出宽度?

    我正在使用 Jupyter 笔记本 我有一个相当宽的屏幕 但是显示的输出 例如 当我打印numpyarray 的格式就像屏幕很窄一样 我找到了一种增加单元格宽度的方法 from IPython core display import HTM
  • 用户主目录中的 log4j 日志文件

    我正在开发一个可以在 OSX 和 Windows 上运行的应用程序 我希望将日志写入用户主目录 对于 OSX 它将位于 Users Library Application Support MyApp log 目录下 而在 Windows 下
  • 有没有可靠的方法来检测 io.js 或 node.js 是否正在运行?

    我可以推断 node js 或 io js 是否正在运行的唯一方法是检查process versions node 在 io js 中 我得到 1 0 4 我确信有更好的方法 有人知道吗 现在最可靠的解决方案是执行node h看看它是否包含
  • 静态元素交互

    我有以下代码 Enabled id gt let removal null if this props disabled removal span gt this onDelete id gt x span return removal 它
  • 新:类型“_InternalLinkedHashMap ”不是类型“DocumentSnapshot”的子类型

    抱歉 我现在正在编程 但我正在学习 请帮助我 我被这个问题困住了 这是我的第一个应用程序 几乎已经完成 因此需要类似的帮助才能完成它 我收到此错误 类型 InternalLinkedHashMap 不是类型 DocumentSnapshot
  • 何时添加组件类与用户控件?

    我有一个总体想法 并且有一些明显的情况 但对我来说也有一些灰色区域 什么时候最好使用从组件扩展以及什么时候最好创建用户控件 这与我试图解决的特定工作问题有关 但具体问题并不重要 这个问题的一般答案对我来说就足够了 在 WPF 和 Windo
  • 链接器错误已定义

    我正在制作一个nodejs插件 我的 Visual Studio 项目中有 5 个文件 comm h cc node main cc util h cc 我将它与图书馆链接node lib node main cc有一个功能 v8 Hand
  • 如何将 SSL 证书添加到 Bluemix java Cloud Foundry 应用程序?

    我正在使用 Spring Boot Java JDK 1 8 Java MongoDB 驱动程序和 MongoDB 开发微服务 我已经在 Bluemix 上创建了 MongoDB 实例 并且正在从 Java 微服务连接到该实例 Bluemi
  • 根据可能不存在于所有值上的分隔符将 pandas 列分成两部分

    我的数据框的一列看起来像这样 application blah 3 14 xyz 5 2 abc 代表软件 版本 我正在努力实现这样的目标 application name ver blah 3 14 blah 3 14 xyz 5 2 x
  • FormBorderStyle为NONE时的表单高度问题

    我有一个无边框表单 FormBorderStyle None 高度为23像素 在设计器中设置 当 NET 在运行时绘制我的表单时 它会绘制它38像素高 由于某种原因它增加了标题栏的高度 MessageBox Show this Height