Entwickler-Ecke
WinForms - Schriftarteigenschaft eines TreeViewNodes abprüfen
Scofield2011 - Fr 16.12.11 18:59
Titel: Schriftarteigenschaft eines TreeViewNodes abprüfen
Hallo,
ich habe eine Frage zu TreeViews:
Ich möchte mit folgendem Code abhängig davon ob der text des Nodes fettgedruckt ist einen bestimmten Button deaktivieren bzw.aktivieren.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| private void TestTree_AfterSelect(object sender, TreeViewEventArgs e) { if (TestTree.SelectedNode.NodeFont.Bold) { ... } else { ... } } |
Leider bekomme ich immer eine NullPointer Exception.
Ist denn in TestTree.SelectedNode.NodeFont.Bold nicht hinterlegt ob der Text des jeweiligen Knotens fett (true) oder nicht fett (false) dargestellt ist?
Wie kann eigentlich eine bool Variable null sein?
Ich hoffe jemand kann mir hier weiter helften und bedanke mich schon einmal im Voraus.
CU
Scofield2011
Th69 - Fr 16.12.11 19:46
Hallo,
ich denke mal eher, daß TestTree.SelectedNode bzw. NodeFont null ist (aber das findest du mit dem Debugger ja sehr schnell raus ;-)).
Siehe insbesondere den Hinweis zu NodeFont in der MSDN:
Zitat: |
Wenn null (Nothing in Visual Basic) festgelegt ist, ist der verwendete Font der Font-Eigenschaftenwert des TreeView-Steuerelements, dem dieser Knoten zugeordnet ist.
|
Scofield2011 - Fr 16.12.11 20:30
Th69 hat folgendes geschrieben : |
Hallo,
ich denke mal eher, daß TestTree.SelectedNode bzw. NodeFont null ist
|
Du hast recht NodeFont ist null. Jetzt stellt sich mir allerdings die Frage wieso?
Der SelectedNode muss doch irgendwelche Font Eigenschaften haben. Der SelectedNode ist übrigens nicht null, was ich als ein Node wurde angewählt interpretiere. Und da er ja auch dargestellt wird, müssten da doch auch Font Eigenschaften verfügbar sein.
Th69 - Fr 16.12.11 21:13
Hallo,
im Zitat steht doch die Auflösung.
C#-Quelltext
1: 2: 3: 4: 5:
| Font font; if (node.NodeFont == null) font = node.TreeView.Font; else font = node.NodeFont; |
nur als Anschauung so hingeschrieben - ich selber würde es per ?? Operator lösen:
C#-Quelltext
1:
| Font font = node.Font ?? node.TreeView.Font; |
Anhand der 'null' kann man also sehen, ob der Node einen eigenständigen Font hat oder aber der TreeView.Font benutzt wird. Ich denke dies wird zur Schonung von Ressourcen so gemacht, damit nicht aberdutzende von Referenzen auf den Font gesetzt werden (TreeView ist ja nur eine Kapselung des WinAPI-Controls - bzw. CommCtrls - und in C werden eben Nullzeiger dafür benutzt).
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!