我在詳細模式一個ListView,我想有一些項目文本的粗體(突出顯示在那裏找到的項目文本的一些子)。如何使ListViewItem文本的一部分變爲粗體?
因此,像這樣:
Somefilename/boldText /等
有沒有辦法做到這一點?
我在詳細模式一個ListView,我想有一些項目文本的粗體(突出顯示在那裏找到的項目文本的一些子)。如何使ListViewItem文本的一部分變爲粗體?
因此,像這樣:
Somefilename/boldText /等
有沒有辦法做到這一點?
好的,所以這將是困難的,因爲您將不得不OwnerDraw
您的ListView
首先通過將該屬性設置爲true
。現在,你這樣做,你會需要實現DrawColumnHeader
並將這一行是:
e.DrawDefault = true;
接下來,您將需要執行下面的代碼,無論是在DrawItem
或DrawSubItem
取決於哪個區它存在於。記住我給你的代碼是沒有完全完成,因爲它沒有解析字符串或任何東西,還你仍然需要實現繪製選擇的項目,因爲現在你的畫上自己的文字。
var boldFont = new Font(this.Font, FontStyle.Bold);
var location = new PointF(e.Bounds.Location.X, e.Bounds.Location.Y);
e.Graphics.DrawString("Somefilename/", this.Font, Brushes.Black, location);
var size = e.Graphics.MeasureString("Somefilename/", this.Font);
location.X += size.Width;
e.Graphics.DrawString("boldText", boldFont, Brushes.Black, location);
size = e.Graphics.MeasureString("boldText", boldFont);
location.X += size.Width;
e.Graphics.DrawString("/etc", this.Font, Brushes.Black, location);
另一個要注意的是,你必須與偏移一點玩,因爲有些字體有邊距和加粗字體佔用更多的空間。
如果Item
不是SubItem
然後就落實e.DrawDefault = true;
爲DrawSubItem
的事件 - 正相反,如果該項目是一個SubItem
然後實現線DrawItem
。
你必須重寫的OnPaint。請點擊以下鏈接:
Make portion of a Label's Text to be styled bold
但是,列表視圖不是由.NET Framework畫和僅支持。因此,即使您重寫OnPaint,也可能不會調用它。所以你可能不得不重寫你的listview控件。
OnPaint絕對不會幫助你。你需要用ListView做很多工作來完成一些複雜的事情。以ObjectListView爲例。 – Grammarian
這是正確的 - 我放置瞭如何繪製OP想要的文本的非常**的部分實現,但還有很多工作要做。 @Grammarian,如果你有更多的添加到我的文章,請隨時。 –
誠然,.UseItemStyleForSubItems =假對每個項目進行設置。在我看來這是最合適的答案。 – Larry
WPF或WinForms的? –
就像@KlausByskovHoffmann問,是它的窗口或網頁? – MaxDataSol
對不起,忘了提及...它的WinForm應用程序 – bakua