57 votes

Le noeud arborescence en gras C # Winforms ne montre pas le texte entier

J'utilise le code suivant pour rendre mes schémas en gras:

 Font font = new Font(tvQuestionSequence.Font, FontStyle.Bold);

foreach (QuestionnaireBuilder_Category cat in categories)
{
    TreeNode node = new TreeNode();

    node.Text = cat.Description;
    node.Name = cat.Id.ToString();

    node.NodeFont = font;

    tvQuestionSequence.Nodes.Add(node);
}
 

Mais le texte des nœuds en gras ne s'affiche pas correctement. La ou les dernières lettres ne sont pas affichées. Comment venir? Et comment résoudre ce problème?

64voto

BlunT Points 417

J'ai trouvé ce Post lors de la recherche sur le web parce que je suis confronté exactement le même problème.

Cependant, l'ajout d'un espace blanc à la fin du nœud n'était pas une option, et j'ai trouvé une alternative qui semble résoudre le problème.

Après le réglage de mon nœud de police Gras, tout ce que je dois faire est de réinitialiser le nœud de texte avec la même valeur.

Voici l'Exemple de Code:

Font boldFont = new Font(treeview.Font, FontStyle.Bold);
node.NodeFont = boldFont;
node.Text = node.Text;

Il semble que le nœud est redessiné après la modification du texte, ce qui est exactement ce que je voulais en premier lieu.

22voto

Martijn Points 5733

J'ai trouvé qu'il s'agissait d'un problème Windows. Une solution de contournement pour ce problème est la suivante:

Dans le constructeur de formulaire, définissez la police de l'arborescence en gras. Lorsque vous ajoutez des noeuds qui ne doivent pas être en gras, modifiez la police par

 // Constructor of your form
public Form() 
{
    InitializeComponent();

    Font font = new Font(tvQuestionSequence.Font, FontStyle.Bold);
    tvQuestionSequence.Font = font;
}

// Add regular nodes (not bold)
Font font = new Font(tvQuestionSequence.Font, FontStyle.Regular);

TreeNode treeNode = new TreeNode();
treeNode.Text = "Foo";
treeNode.NodeFont = font;

TreeNode parent = tvQuestionSequence.Nodes.Find("parent", true);
parent.Nodes.Add(treeNode);
 

5voto

Adel Hazzah Points 2860

C'est un bug connu de Windows. La solution simple consiste simplement à ajouter un caractère d'espace supplémentaire à la fin de vos chaînes. Le caractère d'espace ne sera pas visible, mais il augmentera le nombre de pixels nécessaires pour tracer la chaîne, de sorte que la chaîne entière sera visible.

3voto

Bappie Points 21

Tout cela ne m'aide pas. L’avantage de faire est de rendre la police un peu plus grosse et audacieuse au moment de la conception. (Dans la fenêtre Propriétés)

Assurez-vous donc que vous définissez l'arborescence avec une police suffisamment grande, puis vous pourrez ensuite ajouter des nœuds avec une police plus petite. Ils iront bien.

3voto

user3161309 Points 11

Je suis d'accord avec la solution fournie. Je veux juste ajouter que pour faire un peu de lumière sur le problème. Le treeview a sa propre police de caractères qui détermine la largeur des éléments au niveau de la racine. Qui compense le fait qu'il n'est qu'un élément de la hauteur de la propriété disponible et aucun article de la largeur de la propriété.

La solution à votre problème est de déterminer ce que la police de votre nœud racine doit être, puis définissez l'arbre de la même police. Vous pouvez le faire au moment de la conception aussi.

Espérons que l'aide à quelqu'un.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X