我对大家有一个有趣的询问。
我正在研究C#项目,并且认为如果用户提交非数字值,文本框可以更改颜色,这将是一件很不错的事情。我已经设置了扩展的或条件语句来检查非数字,例如:
public void catchNonNumeric()
{
int parsedValue;
if (!int.TryParse(txtBxStudentInput.Text, out parsedValue) ||
!int.TryParse(txtBxPCInput.Text, out parsedValue) ||
!int.TryParse(txtBxStuTourInput.Text, out parsedValue) ||
!int.TryParse(txtBx203A.Text, out parsedValue) ||
!int.TryParse(txtBx203F.Text, out parsedValue))
{
checker = false;
}
else
{
checker = true;
}
}
但是现在我想知道是否有一种方法可以处理此语句中失败的条件/文本框,并更改其颜色以向用户显示问题出在哪里。
这不是急需的,只是我认为很酷的事情!谢谢大家的帮助!
答案 0 :(得分:1)
执行此操作的一种方法是为要验证的控件创建List<TextBox>
,然后在它们上循环以测试条件。如果其中之一失败,请将checker
设置为false
,并将其中一个的ForeColor
设置为Red
:
public void CatchNonNumeric()
{
// Start our checker flag variable to true
checker = true;
// Create a list of TextBox controls that we want to validate
var textBoxes = new List<TextBox>
{txtBxStudentInput, txtBxPCInput, txtBxStuTourInput, txtBx203A, txtBx203F};
// Validate each TextBox
foreach (var textBox in textBoxes)
{
int parsedValue;
if (int.TryParse(textBox.Text, out parsedValue))
{
// Reset the color to black (or whatever the default is) if it passes
textBox.ForeColor = Color.FromKnownColor(KnownColor.WindowText);
}
else
{
// Otherwise set the color to red and our checker flag to false
checker = false;
textBox.ForeColor = Color.Red;
}
}
}
答案 1 :(得分:0)
如果绑定到数字,则默认情况下WPF中的文本框将获得此文本框。您将获得数据拒绝以及UI样式。
否则,您当然可以使用Func委派查询。 Func接受任意数量的泛型作为输入,并将提供所需的输出(在这种情况下为布尔值)。
var functionDelegate = new Func<string, bool>(text =>
{
int parsedValue;
return int.TryParse(text, out parsedValue);
}
//Usage
var isStudentInputNumercic = functionDelegate(txtBxStudentInput.Text);