C#: 如何在运行时更改标签的字体样式(下划线)?
目前我了解到,如果您想在标签上运行时更改与字体相关的属性,主要是所有字体属性,您需要使用以下代码:
lblName.Font = new Font(... etc. etc.
以上内容是否有一种快捷方式,只分配一个新的字体样式,如FontStyle.Underline?
还是说我必须使用“new Font()”方法并将所有字段一起分配才能给我的标签添加下划线?
C#: 如何在运行时更改标签的字体样式(下划线)?
目前我了解到,如果您想在标签上运行时更改与字体相关的属性,主要是所有字体属性,您需要使用以下代码:
lblName.Font = new Font(... etc. etc.
以上内容是否有一种快捷方式,只分配一个新的字体样式,如FontStyle.Underline?
还是说我必须使用“new Font()”方法并将所有字段一起分配才能给我的标签添加下划线?
您的做法:
this.Font = new Font(this.Font, FontStyle.Underline);
是正确的。原因是字体是一个封闭且不可变的类型(设计上如此)。在.NET 1中引入时,这似乎有点奇怪,但随着当今对函数式编程、并发和不可变性的强调,这种风格越来越常见。也许之所以这样做是因为控件继承其容器的字体,并跟踪单个字体属性更改比跟踪整体字体更改要更费力一些。
使用以下代码:
this.Font = new Font(this.Font, FontStyle.Underline);
适用于Win32表单。
//Bold.
label1.Font = new Font(label1.Font.Name, 12, FontStyle.Bold);
//Bold With Underline.
label1.Font = new Font(label1.Font.Name, 12, FontStyle.Bold | FontStyle.Underline);
//Bold with Underline with Italic.
label1.Font = new Font(label1.Font.Name, 12, FontStyle.Bold | FontStyle.Underline | FontStyle.Italic);
我使用的是 .Net Framework 2.0。在 Web 应用程序中,这个方法可以正常工作。但在窗体应用程序中,它是只读的。
lblName.Font.Underline = true;
这是定义:
//
// Summary:
// Gets or sets a value that indicates whether the font is underlined.
//
// Returns:
// true if the font is underlined; otherwise, false. The default value is false.
[DefaultValue(false)]
[NotifyParentProperty(true)]
public bool Underline { get; set; }