我正在尝试嵌套方法,或将方法放在其他方法中。第一次使用C#和Microsoft Visual Studio,我的困境就是这个。我创建了一个带有事件单击按钮的表单来验证用户输入,这本身很好,但是我需要在单击按钮时验证多个输入。在“计算”按钮的单击事件处理程序中,对三个文本框(用户将用于数据输入的三个文本框)执行输入验证。为了提高代码效率,我想使用单独的方法来实现这一点。我已经尝试直接在事件处理程序中编写更多方法,但无论我如何启动方法public,private,static,void,main等我总是会遇到错误。任何帮助/建议将不胜感激。
private void btnCalculate_Click(object sender, EventArgs e)
{
int txtLength = 0;
if ((txtLength < 5) & (txtLength > 50))
MessageBox.Show("Length measurement is invalid" + "\r\n" + "Please enter a value between 5 and 50", "Data Invalid");
int txtWidth = 0;
if ((txtWidth < 2) & (txtLength > 20))
MessageBox.Show("Width measurement is invalid" + "\r\n" + "Please enter a value between 2 and 20");
int txtAvgDepth = 0;
if ((txtAvgDepth < 2) & (txtAvgDepth > 4))
MessageBox.Show("Width measurement is invalid" + "\r\n" + "Please enter a value between 2 and 20");*/
}
更改了方法中的代码及其引发的错误消息。原始代码没有语法错误。
问题解决了。非常感谢你的帮助:))
答案 0 :(得分:3)
只需将它们添加到课程中:
private void CalculateButton_Click(object sender, EventArgs e)
{
ValidateLength();
ValidateWidth();
ValidateDepth();
}
private void ValidateLength()
{
int txtLength = LengthTextBox.Value;
if ((txtLength < 5) & (txtLength > 50))
MessageBox.Show("Length measurement is invalid" + "\r\n" + "Please enter a value between 5 and 50", "Data Invalid");
}
private void ValidateWidth()
{
int txtWidth = WidthTextBox.Value;
if ((txtWidth < 2) & (txtLength > 20))
MessageBox.Show("Width measurement is invalid" + "\r\n" + "Please enter a value between 2 and 20");
}
private void ValidateDepth()
{
int txtAvgDepth = DepthTextBox.Value;
if ((txtAvgDepth < 2) & (txtAvgDepth > 4))
MessageBox.Show("Depth measurement is invalid" + "\r\n" + "Please enter a value between 2 and 4");*/
}
我想你正在尝试整理这个并且只有一个验证程序:
private void CalculateButton_Click(object sender, EventArgs e)
{
ValidateRange(LengthTextBox.Value, 5, 50, "Length");
ValidateRange(WidthTextBox.Value, 2, 20, "Width");
ValidateRange(DepthTextBox.Value, 2, 4, "Depth");
}
private void ValidateRange(int value, int min, int max, string msg)
{
if (value < min || value > max)
MessageBox.Show(
string.Format("{0} measurement is invalid\r\nPlease enter a value between {1} and {2}", msg, min, max),
"Data Invalid");
}
答案 1 :(得分:0)
单击处理程序称为委托,它们以单事件,多订阅者方式订阅事件。您尝试实现的目标是完全可能的,但不是来自IDE GUI,因为它旨在管理单个订阅。您可以从像
这样的代码订阅该事件btnCalculate.Click += ClickHandler1;
btnCalculate.Click += ClickHandler2;
btnCalculate.Click += ClickHandler3;
尽管有可能,但我强烈建议反对它,因为它似乎过度设计,并不是真正意味着如何使用该平台。它不应该有任何不良副作用,因为.Net事件/委托系统已准备好处理这个用例,但可维护性在此过程中受到影响。
我宁愿选择orchestrator方法。订阅一次并从那里调用每个验证方法。
更多阅读材料: