CheckBox 無文本,只想改方框背景色表達狀態,但 CheckBox.BackColor 不影響原生方框渲染。
// 設計器拖入 PictureBox(picState) + Label(lblText)
// 代碼控制
void SetState(bool on) {
picState.BackColor = on ? Color.Green : Color.Red; // 或設圖片
lblText.Text = on ? "運行中" : "已停止";
}
// 點擊切換
private void picState_Click(object sender, EventArgs e) {
bool newState = picState.BackColor != Color.Green;
SetState(newState);
// 觸發業務邏輯
}
StateIndicator 復用。checkBox.FlatStyle = FlatStyle.Flat;
checkBox.FlatAppearance.CheckedBackColor = Color.Green;
checkBox.FlatAppearance.MouseOverBackColor = Color.LightGreen;
// 需設置 Appearance = Appearance.Button 才生效背景
checkBox.Appearance = Appearance.Button;
但原生方框仍受系統主題影響,**組合控件方案更穩健**。
CheckBox 原生方框背景難改,**PictureBox + Label** 組合靈活可控,封裝後即為領域專用狀態指示器。