上标标签或表格名称
Posted
技术标签:
【中文标题】上标标签或表格名称【英文标题】:SuperScript Label or Form name 【发布时间】:2013-10-30 12:37:36 【问题描述】:如何在标签或表单名称属性中显示上标字符串。
我发现很少有像 one 这样的问题,但想知道是否有办法解决像“a-z”这样的字符?
【问题讨论】:
你见过this吗?? 这仅适用于数字而不适用于字母。 这里有一个很好的解决方案:How to add superscript power operators in c# winforms 【参考方案1】:charmap.exe 中已经存在某些字符,如果您专门寻找 X,那么可以使用charmap 实用程序。
1.Windows + R >> 打开charmap.exe
2.向下滚动并查找您的特定角色,在您的情况下是“X”
3.选择字符并粘贴到label.Text
等属性中
它看起来像
【讨论】:
选择特定字符集的选项是一种可能的解决方案(我的答案中没有涉及);但我认为您不应该建议依赖不同的程序并进行手动复制/粘贴。我了解 OP 正在寻找在他的程序中实现此功能,而您建议依赖不同的程序?! (为什么不建议在 MS Word 中创建字符串并从那里复制?) @varocarbas:Charmap 不是第 3 方程序。它是由 Windows 开发的用于扩展特殊字符支持的东西,它随每个 Windows 操作系统一起提供。从 MS Word 或其他实用程序复制粘贴将无济于事。 作为外部程序与其制造商(微软或任何其他公司)无关。 MS Word 示例只是为了强调您的建议不够充分:如果您选择正确的字体类型,您也可以从 Word 中执行此操作。正如我在不久前写的更新中所解释的,如果你想提出这种替代方案,你应该依赖基于编程的解决方案(或者甚至依赖可能通过代码自动化的外部应用程序)。您的解决方案完全超出此类别(编程/C#/winforms)的预期要求。 @varocarbas:我想我必须同意你的观点,因为这个解决方案似乎不适用于 Windows XP。它显示身份不明。我的错..所以我的回答可能会对 OP 有所帮助,但不是一个好的做法。感谢您指出。 好的。感谢您让我知道:这就是我的帮助/SO 的目的:为提供正确的答案做出贡献。【参考方案2】:您应该更好地依赖用于文本装饰的控件:RichTextBox
。您可以对其进行配置,使其看起来像Label
。示例代码(主窗体上的richTextBox1
):
richTextBox1.BackColor = richTextBox1.Parent.BackColor; //Backcolor of the RTB's container
richTextBox1.BorderStyle = BorderStyle.None;
richTextBox1.Text = "Bloggerx";
richTextBox1.Font = new Font(richTextBox1.Font.FontFamily, 10);
richTextBox1.SelectionStart = 7;
richTextBox1.SelectionLength = 1;
richTextBox1.SelectionCharOffset = 5;
richTextBox1.SelectionLength = 0;
您的另一个选择是依靠两个不同的标签,充分协调以获得您想要的外观。
更新
还有另一种选择(尽管我个人不会使用它),它正在使用编码和字体系列(其中一些支持超级和子脚本)。在我看来,另一个答案提出了解释这种替代方案的一种非常糟糕的方法(依赖于外部程序);有更好的方法来实现它。但是,无论如何,我不认为这是一种系统的、可靠的、易于实现的方法(你必须找到相应的格式并确保它能够满足你想要的所有情况);不过还是值得一提的。
【讨论】:
你打算如何处理表单名称? @Sangram 抱歉,我没有关注你。此代码是一个示例:对于 RichTextBox1(假设在主窗体中)。打开一个新项目,在其上放置一个富文本框 (RichTextBox1) 并执行此代码(例如来自 Form Load 事件),您会看到它可以工作。例如,如果您更喜欢将 RichTextBox 放在 Panel 中,则应将 this.BackColor 转换为 Panel1.BackColor(假设面板名为 Panel1)。如果您不知道容器(与 IMO 完全不同),您可以从 Richtextbox 本身获取它。 很抱歉让您感到困惑,让您写详细的解释。 :P 是的,我确实了解它的每一点。 OP 询问了有关标签和表单名称的问题。我完全理解我们可以用 Richtextbox 替换标签,但我想知道您是否可以使用类似的名称作为表单名称。 @Sangram 我已经更新了我的代码:如果你愿意,你可以依赖 Parent 属性。但是,无论如何,您必须注意颜色,以便字体颜色正常(黑色背景上没有黑色字体)。而且,此外,在这些情况下,我更喜欢编写示例代码(= 解释这个想法;而不是为 OP 提供工作代码只是为了粘贴它)。 只是添加,别忘了将RichTextBox控件的ReadOnly属性设置为true。【参考方案3】:对于这种情况,确实有一个简单的答案。使用统一码。只需检查https://en.wikipedia.org/wiki/Unicode_subscripts_and_superscripts。
这是一个例子
a=5ˣ;
标签的使用方法是:
labelTemperature.Text = "84" + ("\u2070");
至于 RichTextBox 的使用,varocarbas
我没有看到问题的解决方案,而是将 RichTextBox 转换为其可怜的表亲 Label 的方法。顺便说一下 RichTextBox 应该设置为没有多行并且是只读的。但是使富文本框无法使用的原因是它不支持透明颜色,这是标签的主要优势。当我自己面对这个问题时,RichTextBox 没有显示在 control.DrawToBitmap() 创建的位图上
【讨论】:
以上是关于上标标签或表格名称的主要内容,如果未能解决你的问题,请参考以下文章