在我的 winform 应用程序中,我正在尝试对必填字段进行颜色编码。在用户编辑时,当填写必填项时,背景变为浅绿色,如果必填字段为空,则其背景为红色。根据其他字段中的输入启用和禁用某些字段,因此有时我需要禁用的字段,并且应该完全禁用(禁用颜色背景)。这就是我所拥有的背景变化:
public static void UpdateBackgroundColor(this NumericUpDown control)
{
if (!control.Enabled)
{
control.BackColor = SystemColors.InactiveBorder;
return;
}
var inputValue = control.Value;
if (inputValue == 0)
{
control.BackColor = Color.Red;
return;
}
control.BackColor = Color.LightGreen;
}
类似的功能适用于 TextBox 并且工作正常,没有故障。但是 NumericUpDown 行为不端。这是我在该字段为必填且为空时看到的内容:
但是当这个字段被禁用时,它会在它周围保留一个红色边框:
当背景为绿色并被禁用时,也会发生同样的情况。
那么为什么会发生这种情况以及如何解决呢?
UPD:根据韩的回答,我很快更新了我的代码,但这仍然不起作用。
private static void SetBackgroundColor(this Control control, Color color)
{
control.BackColor = color;
foreach (Control childControl in control.Controls)
{
SetBackgroundColor(childControl, color);
}
}
我大致是这样使用它的:
numericUpDown1.Enabled = true;
numericUpDown1.SetBackgroundColor(Color.Red);
numericUpDown1.Enabled = false;
numericUpDown1.SetBackgroundColor(SystemColors.InactiveBorder);
尽管我浏览了 NUD 的所有子控件并在那里更改了背景颜色,但仍然可以在文本框周围找到该框架。还有其他想法吗?
干杯!!