4
我需要一個工具條標籤,它的背景顏色在運行時發生變化,但不管我做什麼。它不會改變它的背景色,儘管它們可以選擇改變背景色。爲什麼會這樣,以及如何在運行時或設計時間使其背景顏色屬性發生變化?爲什麼在設計時間或運行時間內toolstriplabel的backcolor屬性不會改變?
由於提前,
我需要一個工具條標籤,它的背景顏色在運行時發生變化,但不管我做什麼。它不會改變它的背景色,儘管它們可以選擇改變背景色。爲什麼會這樣,以及如何在運行時或設計時間使其背景顏色屬性發生變化?爲什麼在設計時間或運行時間內toolstriplabel的backcolor屬性不會改變?
由於提前,
這是由ToolStrip中的RenderMode設置的影響。只有當您將其更改爲System時,BackColor屬性纔會有效。其他渲染器使用主題顏色。你可能不會很喜歡System,但是你可以通過實現你自己的渲染器來讓你吃蛋糕。使其看起來類似於:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
this.toolStrip1.Renderer = new MyRenderer();
}
private class MyRenderer : ToolStripProfessionalRenderer {
protected override void OnRenderLabelBackground(ToolStripItemRenderEventArgs e) {
using (var brush = new SolidBrush(e.Item.BackColor)) {
e.Graphics.FillRectangle(brush, new Rectangle(Point.Empty, e.Item.Size));
}
}
}
}