Label属性接受C#中的转义序列

swe*_*tha 0 .net c# label escaping winforms

可能重复:
在Windows窗体的文本标签中输入"&"符号?

标签中是否有任何属性可以在C#中显示"&"?

我正在尝试在标签中显示客户名称.当名称中有任何"&"符号时,它将显示为"_".例如,A&B XXX显示为ABB下划线.

而不是硬编码,有没有办法&通过设置任何属性显示收到的符号?

Cod*_*ray 5

Label控制无法显示通过转义序列编码的控制字,而且也没有其控制该属性.原因是它使用框架中内置的标准图形例程来绘制文本,这些例程不会扩展控制字符.更不用说类似的含义\t是模棱两可的:应该将多少个空格视为制表符?

如果要显示类似标签或跳到新行,您需要将其硬编码到字符串中:

myTabLabel.Text = "This is a spaced          out label!";
myNewLineLabel.Text = "First line" + Environment.NewLine + "Second line"
Run Code Online (Sandbox Code Playgroud)

编辑以回应编辑过的问题:

默认情况下,ampersand(&)字符表示标签的关键助记符.这显示为带下划线的字母,对键盘访问很有用.每当用户按下与键一起指定为特定控件的助记符的Alt键时,该控件就会接收输入焦点.(当然,对于无法获得焦点的标签,Tab键顺序中的下一个控件会获得焦点,这对于文本框或其他本身不支持键盘助记符的控件之前的标签很有用.)

当然,这一切都很好,但有时您不需要为特定控件分配助记符序列,或者在您的情况下,您希望显示&符号而不是仅仅作为助记符指示器使用.您可以轻松地通过设置实现这个UseMnemonic属性的的Label控制,以"假".当此属性为false时,&符号不会被解释为访问键前缀字符,而是解释为文字字符.

或者,如果您不想出于任何原因设置此属性,或者您希望继续使用其他字符作为键盘助记符,则可以在标签标题中将两个&符号相邻放置.这将基本上"转义"&符号,使其显示为文字,但使用其他符号后面的字符作为访问键前缀字符.

所以,像:

myLabel.Text = "Milk && &Cookies"
Run Code Online (Sandbox Code Playgroud)

会产生:"牛奶和饼干"(C中带有"Cookies"下划线)UseMnemonic == true.