2011-06-14 72 views
0

我不確定是否使用了錯誤的術語,這可能是爲什麼我的搜索沒有顯示任何內容。將文本框傳遞給void

我有一堆文本框,我想驗證並檢查它們不包含撇號。那我的代碼是:

public void apostropheCheck(TextBox fieldName) 
{ 
    Match m = Regex.Match(fieldName.Text, @"'"); 

    if (m.Success) 
    { 
     validationErrorProvider.SetError(fieldName, "Field can not contain apostrophes"); 
    } 
    else if (!m.Success) 
    { 
     validationErrorProvider.SetError(fieldName, ""); 
    } 
} 

,並在文本框中輸入驗證:

private void FirstNameTextBox_Validating(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    //Checks for apostrophes 
    apostropheCheck(FirstNameTextBox); 
} 

然而,當我運行這一點,被傳遞到空隙值是在文本的文本(例如'John'或'Mary')我可以使用這個代碼來處理每個驗證事件的空白代碼,但這會重複我自己。有沒有更好的辦法?

+0

你能不能改一下你的意思是什麼「傳遞到無效?」這對我來說根本就沒有意義,我看不出任何其他方式來解釋你的意思是否合理。 – 2011-06-14 03:12:09

+0

我認爲你可能會混淆你的條款。虛空是一種類型。把任何東西傳遞給它是沒有意義的。也許你的意思是一個功能?在這種情況下,你在帖子中提到了兩個這樣的功能。你指的是哪一個? – 2011-06-14 03:15:11

+0

你稱之爲'void'實際上叫做'method'。 'void'只表示''方法'不返回任何值。 – 2011-06-14 03:15:39

回答

0

事件的發送對象是一個文本框,這樣你就可以在你的應用程序將它轉換爲文本框,重複同樣的事件處理程序,所有的文本框

private void FirstNameTextBox_Validating(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    apostropheCheck(((TextBox)sender).Text); 
} 
+0

非常感謝,我認爲我認爲在這種情況下,這是我需要的答案,而有一個驗證事件是一個好主意,某些文本框首先得到其他事物的驗證,並且只檢查撇號(如果沒有與其他事物有關的錯誤)(並且如果撇號檢查運行第二它會消除第一個錯誤,反之亦然)。 – Hybrid 2011-06-14 03:25:35

3

您可以擁有一個通用處理程序,並將其用於所有文本框的Validating事件。

private void CommonTextBox_Validating(object sender, System.ComponentModel.CancelEventArgs e) 
{ 
    //Checks for apostrophes 
    apostropheCheck((TextBox)sender); 
} 
0
  1. 術語:您指的是函數apostropheCheck作爲其返回類型的void,標準方式是使用函數名稱apostropheCheck。

  2. 如果您將代碼中的文本框的名稱替換爲發件人前,則可以使用相同的函數對所有文本框進行驗證。

 
    private void FirstNameTextBox_Validating(object sender,System.ComponentModel.CancelEventArgs e) 
    { 
     //Checks for apostrophes 
      apostropheCheck((TextBox)sender); 
    }