私の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: Han の回答に従って、すぐにコードを更新しましたが、それでも機能しません。
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 のすべての子コントロールを調べて、そこで背景色を変更したにもかかわらず、テキスト ボックスの周りにそのフレームを取得します。他のアイデアはありますか?
乾杯!!