DomainUpDown(微调器)控件正在切断显示文本的底部像素

Posted

技术标签:

【中文标题】DomainUpDown(微调器)控件正在切断显示文本的底部像素【英文标题】:DomainUpDown (spinner) control is cutting off the bottom pixel of displayed text 【发布时间】:2010-11-18 10:28:17 【问题描述】:

我正在使用 winforms,并且 DomainUpDown 控件的高度被锁定在 20 像素,这导致“y”和其他字符在底部被截断。

我最初对如何解决问题的想法是更改控件高度,但我做不到。在设计器中,我只有控件可以按宽度拖动它的大小。属性页会立即恢复我对高度所做的任何更改。尝试在代码中更改值静默失败;没有错误,没有异常,但值也没有变化。

在此示例表单中,DomainUpDown 中的“g”将被删除。

公共部分类 Form1:System.Windows.Forms.Form 私有 System.Windows.Forms.DomainUpDown domainUpDown1 = new System.Windows.Forms.DomainUpDown(); 公共表格1() this.domainUpDown1.Location = new System.Drawing.Point(16, 8); this.domainUpDown1.Size = new System.Drawing.Size(212, 20); this.domainUpDown1.Text = "为什么像g cut这样的后裔?"; this.ClientSize = new System.Drawing.Size(328, 64); this.Controls.Add(this.domainUpDown1);

【问题讨论】:

【参考方案1】:

我在使用 DomainUpDown 控件时看到了相同的固定高度行为。您可以调整所用字体的大小,从而更改控件的高度以匹配文本。也许稍微调整文本的大小可以帮助用“降序”剪裁字符。我看不到使用默认 8.25pt 字体的剪裁。

编辑: 在运行经典主题的 XP 上复制并通过 Dan 的测试后,问题似乎是边框和填充的厚度,它切断了 g。

BorderStyle 设置为 FixedSingle 或 None 可以解决问题。

domainUpDown1.BorderStyle = BorderStyle.FixedSingle;

domainUpDown1.BorderStyle = BorderStyle.None;

您需要查看在您的应用程序中看起来最好的部分。哦,将您的主题设置为 XP(而不是经典)也可以。

【讨论】:

我使用的是默认的 MS Sans serif 8.25 字体。我试着在 7.75 到 8.75 点之间摆弄。唯一的结果是偶尔下降的部分被 2 个像素剪裁。用小写的 g 很容易看到横笔明显缺失的地方。 我还尝试了其他一些字体。唯一没有截断下降线的是 Consolas,但因为它明显不同于标准字体,我真的不想使用它。如果我只在一个地方做,它会像拇指酸痛一样突出,即使我能得到签核,在应用程序范围内更改字体也将是一个主要的皮塔(对齐问题)。 这让我很难过;我根本无法复制剪辑。我将您的代码复制到了一个新的表单中,它并没有切断 g 的底部。尝试在设计师中创建,这也可以。我想知道您的表单设置中是否有导致这种行为的东西? 这很有趣。我正在运行 XP32;并将在今天晚些时候在其他几台机器上进行测试,看看我是否可以在其他地方重现它。 跟进。除了我的普通工作站之外,我已经在另外 4 台 PC 上测试了我的应用程序。 2XP32 系统(一个属于同事,一个属于个人)、一个 Vista32 Ultimate 系统(个人)和一个 W7RC64 系统(个人)。该控件在 Vista 和 W7 系统上正确呈现文本。其他 2 个 XP 系统没有。渲染之间的区别在于,XP 系统为控件使用 2 像素边框而不是 1 像素边框,并且它们将文本绘制在比顶部边框更远的像素上(净低 2 像素)。

以上是关于DomainUpDown(微调器)控件正在切断显示文本的底部像素的主要内容,如果未能解决你的问题,请参考以下文章

listview中的自定义控件(微调器)向我显示重复信息

html 带有自定义控件的微调器输入字段

Swift TableView Cell - 显示活动微调器,执行功能,隐藏活动微调器

嵌入式GUI LVGL『Spinbox微调器控件』介绍

嵌入式GUI LVGL『Spinbox微调器控件』介绍

如何显示具有隐藏值的微调器