2008-11-09 10 views
6

C#: Jaki jest właściwy sposób zmiany stylu czcionki (podkreślenia) z etykiety w czasie wykonywania?WinForms: Jaki jest właściwy sposób zmiany stylu czcionki (podkreślenia) z etykiety w środowisku wykonawczym?

Dotychczas Rozumiem, że jeśli chcesz zmienić czcionkę związane właściwości w czasie wykonywania z etykietą, głównie wszystkich właściwości czcionki, trzeba by użyć,

lblName.Font = new Font(... etc. etc. 

Czy istnieje skrót do powyższego, ale tylko przypisać tylko nowy styl czcionki, taki jak FontStyle.Underline?

lub

musiałbym dokonać za pomocą „nową czcionkę()” metody i przypisać wszystkie pola wraz z nim też tylko podkreślić moją etykietę?

+0

Możesz chcieć określić okno, którego używasz (WinForm lub WPF). –

Odpowiedz

0

Co na temat (używam .Net Framework 2.0) OK, więc działa to w przypadku aplikacji sieci Web. W aplikacji formularzy jest to tylko do odczytu.

lblName.Font.Underline = true;

Oto definicja:

// 
    // 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; } 
+0

Nie będzie działać, ponieważ font.underline jest właściwością tylko do odczytu. –

+0

Czy jesteś pewien? Próbowałem go, zanim opublikowałem i działało. Jakiej wersji używasz? – wonderchook

+0

Oops, nieważne. Działa to w przypadku Web Ap, a nie Windows. – wonderchook

1

uciekają się do,

this.Font = new Font (this.Font, FontStyle.Underline);

Działa dla Win32 Forms.

+0

To wszystko, co wymyśliłem. Nie sądzę, że to jest takie złe. – wonderchook

12

Sposób, w jaki to zrobił:

this.Font = new Font(this.Font, FontStyle.Underline); 

jest poprawna. Powodem jest to, że czcionka jest typu zamkniętego i niezmiennego (według projektu). Po wprowadzeniu w .NET 1 wydawało się to nieco dziwne, ale z dzisiejszym naciskiem na programowanie funkcjonalne, współbieżność i niezmienność ten styl jest postrzegany znacznie więcej. Być może zostało to zrobione w ten sposób, ponieważ elementy sterujące dziedziczą czcionkę swojego kontenera, a śledzenie zmian właściwości poszczególnych czcionek byłoby więcej pracy niż śledzenie hurtowej zmiany czcionki.

1
//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); 
Powiązane problemy