문제
필드가 형태로 비워 두지 않는지 확인하는 더 좋은 방법을 찾고 있습니다. 현재 이것은 내 구현입니다. 더 나은 것을 환영 할 것입니다.
private bool verify(Control c)
{
switch (c.GetType().Name)
{
case "KryptonTextBox":
{
if (((KryptonTextBox)c).Text == "")
{
((KryptonTextBox)c).StateCommon.Border.Color1 = Color.Red;
((KryptonTextBox)c).GotFocus += new EventHandler(ControlGotFocus);
return false;
}
}
break;
case "KryptonComboBox":
{
if (((KryptonComboBox)c).SelectedIndex < 0)
{
((KryptonComboBox)c).StateCommon.ComboBox.Border.Color1 = Color.Red;
((KryptonComboBox)c).GotFocus += new EventHandler(ControlGotFocus);
return false;
}
}
break;
case "KryptonDataGridView":
{
if (((KryptonDataGridView)c).Rows.Count <= 0)
{
((KryptonDataGridView)c).StateCommon.HeaderColumn.Border.Color1 = Color.Red;
((KryptonDataGridView)c).GotFocus += new EventHandler(ControlGotFocus);
return false;
}
}
break;
default:
break;
}
if (c.Controls.Count > 0)
{
foreach (Control cc in c.Controls)
{
if (!verify(cc))
{
return false;
}
}
}
return true;
}
따라서 사용자가 확인 해야하는 컨트롤로 초점을 설정하면이 코드가 실행됩니다.
void ControlGotFocus(object sender, EventArgs e)
{
switch (sender.GetType().Name)
{
case "KryptonTextBox":
{
((KryptonTextBox)sender).StateCommon.Border.Color1 = Color.Gray;
}
break;
case "KryptonComboBox":
{
((KryptonComboBox)sender).StateCommon.ComboBox.Border.Color1 = Color.Gray;
}
break;
case "KryptonDataGridView":
{
((KryptonDataGridView)sender).StateCommon.HeaderColumn.Border.Color1 = Color.Black;
}
break;
default:
break;
}
}
해결책
코드와 같은 코드를 최적화 할 수 있습니다.
switch (c.GetType().Name) { case "KryptonTextBox": }
에게:
TextBox tb = c as TextBox;
if (tb != null)
return string.IsNullOrEmpty(tb.Text);
ComboBox cb = c as ComboBox;
if (cb != null)
return cb.SelectedIndex < 0;
etc.
그러나 나는이 puproses에 유효성 검사기를 사용하는 것이 좋습니다.
다른 팁
Deborah Kurata가 작성한 검증 클래스를 추천합니다. http://msmvps.com/blogs/deborahk/archive/2009/07/16/validation-class.aspx이것은 정말 많은 텍스트 상자가있는 양식을 검증하는 데 도움이되었습니다.
제휴하지 않습니다 StackOverflow