我在这里得到了这个方法:
public void textBoxValid(object sender, CancelEventArgs e)
{
string error = null;
string pattern = @"\,\";
if(Regex.IsMatch(priceTextBox.Text, pattern))
{
error = "Please use [.] instead of [,]";
e.Cancel = true;
}
errorProvider1.SetError((Control) sender, error);
}
当我在这里打电话时:
private void enterButton_Click(object sender, EventArgs e)
{
textBoxValid();
//Write all data to a file.
using (StreamWriter sw = new StreamWriter(@"c:\event.txt", true))
{
sw.WriteLine(priceTextBox.Text + "," + eventTextBox.Text + "," + descriptionTextBox.Text + ","
+ DateTimePicker.Value + "," + DayUpDown.Value);
}
clearTextBoxes();
}
我收到错误说:
没有任何论据符合所要求的形式 参数'发件人' ' WriteEventForm.textBoxValid(对象, CancelEventArg)'
你们其中一个人,好人,能指出我做错了什么吗? 谢谢。
答案 0 :(得分:1)
在textBoxValid()
,您正在调用一个方法,该方法包含两个带有零参数的非可选参数。你不能在C#中做到这一点。
您似乎想要在单击按钮时验证文本框的输入,并在输入无效时阻止该单击事件继续进行。现在以非惯用的方式修复代码,将完全改变方法:
public bool ValidateTextBox(TextBox textBoxToValidate)
{
string error = null;
string pattern = @"\,\";
if(Regex.IsMatch(textBoxToValidate.Text, pattern))
{
error = "Please use [.] instead of [,]";
errorProvider1.SetError(textBoxToValidate, error);
return false;
}
return true;
}
因为sender
中的enterButton_Click()
将是按钮,而不是文本框。因此,您需要提供对要验证的文本框的引用,然后检查方法的返回值:
private void enterButton_Click(object sender, EventArgs e)
{
if (!ValidateTextBox(priceTextBox))
{
return;
}
这将解决您现在的问题。但是你仍然没有按照它的意图使用ErrorProvider。
答案 1 :(得分:0)
检查定义:
public void textBoxValid(object sender, CancelEventArgs e)
基础知识老兄。此方法需要2个参数(sender和args)。试试这个:
textBoxValid(this, null)
尝试将某些逻辑作为发件人传递。尝试将其设置为您为此方法调用raising object
的内容。对于args,你需要自己决定是否需要它们。
通常EventArgs
正在向一个事件传递side-informations。通常,此事件由控件触发,而不是从代码触发。
如果没有从任何控件触发此方法,并且您不需要任何参数,请保留它们:
public void textBoxValid() { }