winform 응용 프로그램에서 필자는 필수 필드에 색상 코딩을 시도하고 있습니다. 사용자 편집시 필요한 입력이 채워지면 배경이 밝은 녹색으로 변하고, 필수 입력란이 비어 있으면 배경이 빨간색으로 표시됩니다. 일부 필드는 다른 필드의 입력에 따라 활성화 및 비활성화되므로 때로는 비활성화 된 필드가 필요하며 완전히 비활성화해야합니다 (비활성화 된 배경).NumericUpDown 비활성화 된 요소의 배경색 변경
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;
}
유사 기능은 텍스트 상자에서 작동없이 결함과 함께 잘 작동 : 이 나는 배경 변경이 것입니다. 그러나 NumericUpDown이 잘못되었습니다.
같은 이야기 :이 필드가 비활성화 될 때
그러나, 그것은 주위에 빨간색 테두리를 유지 : 이 필드가 필요하며 비어있을 때 내가 볼 것입니다 배경이 녹색이고 사용 중지되면 발생합니다.
그렇다면 왜 이런 일이 일어나고 어떻게 수정해야합니까?
UPD : 한 (Han)의 대답에 따라 코드를 신속하게 업데이트했지만 여전히 작동하지 않습니다. 내가 NUD의 모든 자식 컨트롤을 통해 이동하고 변경하는 것이 사실에도 불구하고,
numericUpDown1.Enabled = true;
numericUpDown1.SetBackgroundColor(Color.Red);
numericUpDown1.Enabled = false;
numericUpDown1.SetBackgroundColor(SystemColors.InactiveBorder);
을 그리고 아직도 텍스트 상자 주위에 그 프레임을 얻을 :
private static void SetBackgroundColor(this Control control, Color color)
{
control.BackColor = color;
foreach (Control childControl in control.Controls)
{
SetBackgroundColor(childControl, color);
}
}
그리고 대략 이런 식으로 사용하고 거기에 다시 색상. 다른 아이디어?
건배 !!
빨간색 배경을 설정하고 NumericUpdown 컨트롤을 사용하지 않도록 설정하는 순서는 무엇입니까? 어느 것이 먼저 완료 되었습니까? 컨트롤을 비활성화하거나 배경을 설정 하시겠습니까? 주문을 변경해보십시오. – Sivaraman
먼저 빨간색으로 표시 한 다음 비활성화합니다. 나는 색상의 적용 순서와 함께 놀 것이다. – trailmax
당신은 이것을 알아 냈습니까? DomainUpDown 컨트롤과 동일한 문제가 있습니다. 텍스트 상자 컨트롤의 테두리와 domainupdown 컨트롤 사이에 작은 선이있어서 색을 지정하는 방법을 찾을 수 없습니다. 나는 또한 문제를 보여주기 위해 간단한 예를 들고 어려움을 겪고있다. – CramerTV