2016-11-11 1 views
-1

に対応する与えられていないがあります:引数は、私はここに、この方法だ必要な仮パラメータ「送信者

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.textB」が必要な正式な パラメータ「送信者」に該当する与えられた引数はありません。というエラーを取得oxValid(オブジェクト、 CancelEventArg) '

私は間違って何をしていますか? ありがとうございます。

+4

'textBoxValid();' vs 'textBoxValid(オブジェクト送信者、CancelEventArgs e)'?パラメータが一致しません。エラーが発生すると、あなたが知る必要があることがすべてわかりますか? '必要な仮パラメータ '送信者'に対応する引数はありません。あなたは引数 'sender'を渡していますか?いいえ、あなたのではありません。 – Liam

+0

私を啓発できますか?代わりにtextBoxValid(オブジェクト送信者、CancelEventArgs e)を使用すると、何が欠けていますか。かっこ内のすべてのテキストがハイライト表示されます... –

答えて

1

を、あなたは、引数なしの二つの非オプションのパラメータを持つメソッドを呼び出しています。あなたは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をそのまま使用しているわけではありません。

+0

ありがとう、私はおそらく多くの間違いをすることを、私は初心者であることを理解し、まだ学ぶために負荷があります。ありがとう。 ErrorProviderを正しい方法で使用する方法を説明する優れたリソースを知っていますか? –

+0

修正するだけで、ここにエラーがあります:string pattern = @ "\、\"; 文字列パターン= @ "\、"; それ以外の場合はクラッシュします。私の間違い。 –

+0

ValidatingイベントとErrorProviderを一緒に実装する方法を説明しているリソースをすぐに見つけることはできませんが、それはあなたが探している方法です。これを行うと、[Enter]をクリックした後でなく、ユーザーが入力するときに検証できます。 – CodeCaster

0

定義を確認してください:

public void textBoxValid(object sender, CancelEventArgs e)

基礎男。このメソッドには2つのパラメータ(送信者と引数)が必要です。送信者として何かロジックを渡すようにしてください

textBoxValid(this, null)

:これを試してみてください。この方法のためにraising objectと呼ぶものに設定してください。 argsについては、必要な場合には自分で決定する必要があります。

通常、EventArgsは、イベントにサイド情報を渡します。通常、このイベントはコードではなくコントロールによってトリガーされます。

任意のコントロールからトリガされ、あなたが任意のパラメータを必要といけないありえないこの方法は、それらを残している場合:textBoxValid()

public void textBoxValid() { }

+1

お時間をありがとうございます。 –

関連する問題