上标标签或表格名称

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() 创建的位图上

【讨论】:

以上是关于上标标签或表格名称的主要内容,如果未能解决你的问题,请参考以下文章

如何在标签中使用表格控件名称-角反应形式

Google表格API:获取上次编辑的标签名称

具有固定高度的表格单元格中的自动布局多行标签

这个矩阵或表格的名称是啥?

如何防止 R Expss 在输出数据框中将变量名称与行标签混合?

如何在 Python 中读取具有不同名称的 Excel 工作表