没有给出与所需的形式参数'sender'相对应的参数
本文关键字:参数 相对 sender | 更新日期: 2023-09-27 18:17:23
我在这里得到了这个方法:
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)
在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;
}
因为enterButton_Click()
中的sender
将是按钮,而不是文本框。因此,您需要提供对要验证的文本框的引用,然后检查方法的返回值:
private void enterButton_Click(object sender, EventArgs e)
{
if (!ValidateTextBox(priceTextBox))
{
return;
}
这将暂时解决您的问题。但是你仍然没有使用ErrorProvider
检查定义:
public void textBoxValid(object sender, CancelEventArgs e)
基础的家伙。这个方法需要2个参数(sender和args)。试试这个:
textBoxValid(this, null)
尝试传递一些逻辑作为发送者。尝试将其设置为此方法的raising object
。对于参数,您需要自己决定是否需要它们。
通常EventArgs
正在传递事件的侧信息。通常,此事件由控件触发,而不是由代码触发。
如果此方法不是由任何控件触发的,并且您不需要任何参数,则保留它们:
public void textBoxValid() { }