斜体字符在文本框中的底部被切断

Posted

技术标签:

【中文标题】斜体字符在文本框中的底部被切断【英文标题】:Italic characters' bottom cut off in textBox 【发布时间】:2017-06-14 13:22:20 【问题描述】:

我有一个 TableLayoutPanel,其中 TableLayoutPanels 作为行。每个内部 tableLayoutPanels 都有两行。第二行是textBox,以斜体 样式显示URL。但是 url 的高度被截断了,像“g”这样的字符错过了一些像素,并且根本没有显示“_”。

所以我尝试改变文本框的高度 - 没有改变 - 试图改变内部 tableLayoutPanel 的行大小 - 没有改变 - 试图改变内部 tableLayoutPanel 本身的大小 - 没有改变...

具有讽刺意味的是,在同一行中还有另一个带有斜体文本的标签,它绑定到每个锚点的行底部,但即使我在 textBox 上使用锚点,它仍然会被截断。

相关文本框代码:

textBox2.Font = new System.Drawing.Font("Arial", 9.75F, 
    System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, 
    ((byte)(0)));
textBox2.Location = new System.Drawing.Point(3, 21);
textBox2.Size = new System.Drawing.Size(454, 23);

内部tlp代码:

tableLayoutPanel2.RowStyles.Add(new 
    System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 
    80F));
tableLayoutPanel2.RowStyles.Add(new 
    System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Absolute, 
    27F));
tableLayoutPanel2.Size = new System.Drawing.Size(607, 44);

是否可以以某种方式显示斜体下划线:(最初为 8OG8vit_-Wg)

编辑:将文本框放在它的外部组框和主窗体上。

System.Windows.Forms.TextBox textBox2 = new System.Windows.Forms.TextBox();
textBox2.BorderStyle = System.Windows.Forms.BorderStyle.None;
textBox2.Cursor = System.Windows.Forms.Cursors.IBeam;
textBox2.Font = new System.Drawing.Font("Arial", 9.75F, 
    System.Drawing.FontStyle.Italic, System.Drawing.GraphicsUnit.Point, 
    ((byte)(0)));
textBox2.Location = new System.Drawing.Point(100, 290);
textBox2.Name = "textBox2";
textBox2.ReadOnly = true;
textBox2.Size = new System.Drawing.Size(454, 15);
textBox2.Text = "8OG8vit_-Wg";
textBox2.BackColor = System.Drawing.Color.Coral;
groupBox1.Controls.Add(textBox2); // this.Controls.Add(textBox2); 

结果如下: 和

【问题讨论】:

尝试设置 BackColor 以确保文本框的有效大小实际上足够大。另外:请检查所有 Padding 和/或 Margin 值! 不错的提示,BackColor 使这更容易。可悲的是,设置不同的文本框大小表明绝对没有变化。将文本框也向上移动,没有视觉差异。查看元素,代码中没有设置 Padding 或 Margin 值。有没有我需要注意的默认值? 有默认的 是的,通常是 3 像素。直接放在表单上时,相同的文本框是否仍会被截断? @TaW 编辑了另外两个例子 好的,我可以确认。问题似乎来自 SingleLine 和 Border.None 的组合。你可以让它多行,问题就消失了。仍然很奇怪,看起来像一个错误。 【参考方案1】:

我不禁将其称为错误

TextBox.Multiline = falseBorderStyle.None 的组合似乎使 winforms 过度缩减客户端大小,并会切断下行线和下划线。

解决方法是放弃其中一个;对于您想要的外观,只需制作TextBox.Multiline = true,一切都应如此......:

【讨论】:

【参考方案2】:

我找到了这个错误的以下解决方案:

TextBox.MinimumSize = TextBox.Size;

(见https://www.experts-exchange.com/questions/22658664/Removing-BorderStyle-changes-height-of-text-box-and-bottom-of-letters-is-not-visible.html

【讨论】:

这让我看起来更糟哈哈

以上是关于斜体字符在文本框中的底部被切断的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Access 报告文本框中底部对齐字符串?

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

网页颤动:底部的文字被切断

python 如何替换 text 文本框中被选中的字符

JSP页面中在文本框中输入内容,动态从数据库模糊查询显示到下拉框中!你这个可以给发一下吗?

如何将文本框中的字符串添加到另一个窗口中的列表视图