所以我创建了一个函数ParseandWarn,如果输入不是整数,则弹出一个消息框。如果是整数,则必须在click事件上计算两个输入的总和。有多个计算,这就是我创建函数的原因。 如何在点击事件中实现/激活此功能?我收到错误,可能是解析? 我是编程新手,欢迎任何帮助。
public void ParseandWarn()
{
int Invoergetal1, Invoergetal2;
if (!int.TryParse(txtGetal1.Text, out Invoergetal1))
{
MessageBox.Show("U dient een geheel getal in te voeren!", "Fout", MessageBoxButton.OK, MessageBoxImage.Error);
}
else
{
if (!int.TryParse(txtGetal2.Text, out Invoergetal2))
{
MessageBox.Show("U dient een geheel getal in te voeren!", "Fout", MessageBoxButton.OK, MessageBoxImage.Error);
}
else
{
return;
}
}
}
private void btnSom_Click(object sender, RoutedEventArgs e)
{
int BerekenSom = int.Parse(txtGetal1.Text) + int.Parse(txtGetal2.Text);
txtResultaat.Text += "De som van " + txtGetal1.Text + " en " + txtGetal2.Text + " = " + BerekenSom + Environment.NewLine;
}
答案 0 :(得分:1)
这将是您正在寻找的代码。
我在ref
函数中使用ParseandWarn
作为参考,表示参数为modified by reference。
public bool ParseandWarn(ref int Invoergetal1, ref int Invoergetal2){
bool valid = false;
if ((!int.TryParse(txtGetal1.Text, out Invoergetal1) || !int.TryParse(txtGetal2.Text, out Invoergetal2)) {
MessageBox.Show("U dient een geheel getal in te voeren!", "Fout", MessageBoxButton.OK, MessageBoxImage.Error);
return false;
}
return true;
}
private void btnSom_Click(object sender, RoutedEventArgs e)
{
int Invoergetal1, Invoergetal2;
bool correctInput = ParseAndWarn(ref Invoergetal1, ref Invoergetal2);
if(correctInput)
{
int BerekenSom = Invoergetal1 + Invoergetal2;
txtResultaat.Text += "De som van " + txtGetal1.Text + " en " + txtGetal2.Text + " = " + BerekenSom + Environment.NewLine;
}
}
我们将两个ints
传递给函数,得到TryParse
方法的结果,如果失败,它们将包含零。
现在,事件处理程序将具有值,并通过计算两个变量的总和来获得结果。
修改对无效输入进行额外检查,或null
作为练习。
答案 1 :(得分:0)
首先运行ParseAndWarn()。只有在ParseAndWarn方法找到两个正确的数字输入时,才会运行以下两行。一种方法是让ParseAndWarn方法返回一个布尔值来指示Parse是否成功
public bool ParseandWarn()
{
int Invoergetal1, Invoergetal2;
if (!int.TryParse(txtGetal1.Text, out Invoergetal1) || !int.TryParse(txtGetal2.Text, out Invoergetal2)
{
MessageBox.Show("U dient een geheel getal in te voeren!", "Fout", MessageBoxButton.OK, MessageBoxImage.Error);
return false;
}
return true;
}
private void btnSom_Click(object sender, RoutedEventArgs e)
{
bool correctInput = ParseAndWarn();
if(correctInput)
{
int BerekenSom = int.Parse(txtGetal1.Text) + int.Parse(txtGetal2.Text);
txtResultaat.Text += "De som van " + txtGetal1.Text + " en " + txtGetal2.Text + " = " + BerekenSom + Environment.NewLine;
}
}
您还可以在点击事件中将其全部合并,以避免必须解析两次
private void btnSom_Click(object sender, RoutedEventArgs e)
{
int Invoergetal1, Invoergetal2;
if (!int.TryParse(txtGetal1.Text, out Invoergetal1) || !int.TryParse(txtGetal2.Text, out Invoergetal2)
{
MessageBox.Show("U dient een geheel getal in te voeren!", "Fout", MessageBoxButton.OK, MessageBoxImage.Error);
}
else
{
int BerekenSom = Invoergetal1 + Invoergetal2;
txtResultaat.Text += "De som van " + Invoergetal1 + " en " + Invoergetal2 + " = " + BerekenSom + Environment.NewLine;
}
}