2010-02-10 94 views
4

我有一個WinForms TreeView。 TreeView表示更詳細的視圖摘要,我使用的視覺線索之一是將節點的文本設爲粗體或常規。 問題是,如果將節點的字體從常規變爲粗體,它會剪切文本,就好像它試圖將粗體文本放入常規文本的空間中一樣。如果字體從粗體更改爲常規,TreeView文本會被剪裁

稍微瀏覽一下顯示常用的解決方法是將TreeView的字體設置爲粗體字體,並選擇性地將節點設置爲常規。

這樣做效果更好,但是一旦我將節點更改爲常規節點,如果我將其更改爲爲粗體,則會再次進行裁剪。 由於我動態更新我的視圖,我遇到了這個問題。

令人驚訝的是,我在Stackoverflow上找不到這個問題的任何引用,所以認爲我會盡我所能,現在把它浮在這裏。 有誰知道更徹底(但最好不要太複雜)的解決方法或解決方案?

我使用運行在.Net 2.0上的C#3,但如果需要可以使用.Net 3.5。

[更新]

無人問津吧?這很糟糕。到目前爲止,我自己提出的最好的方法是在字符串的末尾添加一些空格(以給它增長空間)。這在很多層面上聞起來(不僅僅是因爲它影響滾動條)。我不想去第三方控制(或寫自己的),因爲這只是爲我的開發團隊的內部應用程序。考慮改變比喻,但它是一個很好的選擇。

回答

10

我跑進與VB.Net同樣的問題和解決方法是調用下面:

TreeView.BeginUpdate() 「 - 在這裏你Poupulate樹節點。 TreeView.EndUpdate()

+0

謝謝Edhy。這聽起來很明顯 - 但是當我去檢查我的代碼時 - 我在文本中將文本設置爲粗體,它位於「Suspend/ResumeLayout()」中,而不是「Begin/EndUpdate()」!修復使問題消失。我覺得我太分心了,因爲我搜索的每個地方都發現了同樣的問題,並沒有提供任何解決方案,甚至微軟也承認這是一個錯誤!希望這篇文章能夠幫助其他人避免同樣的錯誤:-) – philsquared 2010-02-15 10:46:46

+0

這不適合我... – 2011-11-01 23:33:09

3

發現了另一個解決方案:設置文字後改變字體,而不是加入密鑰和文本屬性

0

一個節點我得到了同樣的問題(C#)後改變字體。我的解決方案是:在開始時將treeView字體設置爲粗體,並且當某些節點不得加粗時,請將字體更改爲常規:

if (conditionForRegularTreeNode) 
    newNode.NodeFont = new Font(treeView.Font, FontStyle.Regular); 
相關問題