Sto vivendo il noto problema in cui dopo aver impostato un font TreeNode in grassetto, il testo del TreeNode viene troncato. Tuttavia, credo di aver trovato una situazione in cui tutte le "correzioni" comunemente accettate non funzionano.Grassetto treeview nodo troncato - correzione ufficiale non funzionerà perché il codice nel costruttore
soluzione comune:http://support.microsoft.com/kb/937215
node.NodeFont = new System.Drawing.Font(node.NodeFont, FontStyle.Bold);
node.Text += string.Empty;
Variante 1:C# Winforms bold treeview node doesn't show whole text (vedi risposta di Blunt)
node.NodeFont = new System.Drawing.Font(node.NodeFont, FontStyle.Bold);
node.Text = node.Text;
Variante 2:http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/acb877a6-7c9d-4408-aee4-0fb7db127934
node.NodeFont = new System.Drawing.Font(node.NodeFont, FontStyle.Bold);
treeView1.BackColor = treeView1.BackColor;
scenario in cui Sopra correzioni non funzionano:
Se il codice che imposta il nodo di grassetto è nel costruttore (sia di un modulo o, in questo caso, un controllo utente), le correzioni non funziona:
public partial class IncidentPlanAssociations : UserControl
{
public IncidentPlanAssociations()
{
InitializeComponent();
TreeNode node = new TreeNode("This is a problem.");
node.NodeFont = new Font(treeView1.Font, FontStyle.Bold);
treeView1.Nodes.Add(node);
// This does not fix problem
node.Text += string.Empty;
// This does not fix problem
node.Text = node.Text;
// This does not fix problem
treeView1.BackColor = treeView1.BackColor;
}
}
Tuttavia, se ho posto una qualsiasi di queste tre "correzioni" in codice dietro un pulsante e fare clic dopo tutto fili che funzionerà bene. Sono sicuro che questo è qualcosa a che fare quando il treeview è inizialmente disegnato o qualcosa del genere, ma sto cercando di capire un buon modo per aggirarlo. Eventuali suggerimenti?
Ho modificato il titolo. Per favore vedi, "[Le domande dovrebbero includere" tag "nei loro titoli?] (Http://meta.stackexchange.com/questions/19190/)", dove il consenso è "no, non dovrebbero". –
Prova a chiamare 'treeview1.Refresh()' come ultima riga di codice nel tuo costruttore. –
Grazie John per la modifica. –