有没有办法隔离测试失败的OR条件语句中的条件并将其传递给另一个方法?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有办法隔离测试失败的OR条件语句中的条件并将其传递给另一个方法?相关的知识,希望对你有一定的参考价值。
我对你们所有人都有一个有趣的询问。
我正在研究一个C#项目,并认为如果用户提交非数字值,它会使文本框改变颜色。我已经有一个扩展的Or条件语句设置,用于检查非数字,如下:
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;
}
}
但现在我想知道是否有办法在此语句中采用失败的条件/文本框并更改其颜色以向用户显示问题的确切位置。
这不是一个迫切需要,只是我觉得很酷!谢谢大家的帮助!
答案
一种方法是创建一个你要验证的控件的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;
}
}
}
另一答案
如果绑定到数字,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);
以上是关于有没有办法隔离测试失败的OR条件语句中的条件并将其传递给另一个方法?的主要内容,如果未能解决你的问题,请参考以下文章