2014-04-01 33 views
1

我正在製作一個winform應用程序C#visual studio 2013。在我的表格上,我有幾個text-boxes和幾個buttonsC#Winform文本框驗證中斷取消按鈕

更具體地說,我有一個cancelButton,當點擊將關閉應用程序,這是與這個事件在這裏處理。

private void cancelButton_Click(object sender, EventArgs e) 
{ 
    //close the application 
    Application.Exit(); 
} 

我有一個TextBox_Validated事件看起來是這樣的

private void aTextBox_Validated(object sender, EventArgs e) 
{ 
    int matchIntPosition; 
    string someString = aTextBox.Text.ToUpper(); 

    //check a string array to see if the value entered exsists 
    matchIntPosition= Array.IndexOf(someStringArray, someString); 
    if (matchIntPosition > -1) 
    { 
     string someString = someStringArray[matchIntPosition]; 
    } 
    else 
    { 
     MessageBox.Show("This value does not exist, Please try again."); 
     aTextBox.Focus(); 
    } 
} 

現在我強迫用戶,以確保繼續我的形式之前,這個領域是正確填寫(這是第一次我的表單上的文本框)。

這是我的問題所在,當我點擊我的cancelButton時,它只是在我的aTextBox_Validation事件中點擊了else。強制我輸入正確的值,然後才能點擊取消按鈕。

我已經做了一些谷歌試圖找出我如何解決它。我試過的一些東西是:

cancelButton.CausesValidation = false;在我的cancelButton_Click事件中,沒有工作。

試圖設置一個bool標誌做與^幾乎相同的事情,但似乎也沒有工作。

任何想法或推到正確的地方?

+0

哪裏聲明someStringArray變量?它是否包含someString變量值? – yosbel

+0

我會嘗試驗證提交按鈕單擊上的所有文本框。這是很正常的形式行爲。它可以解決您的問題,並防止最終客戶對您繼續關注它們感到沮喪。 – Jonesopolis

+0

@yosoy陣列在課堂上,你錯過了我的問題。 – Zoxac

回答

0

然後你應該在「提交」按鈕上進行驗證。問題是,Validated事件始終會在您離開文本字段時觸發,所以即使您點擊「取消」按鈕,也會發生這種情況。

+0

我已將所有內容都移至「確定」按鈕(或提交)中。然而,當文本框的值是無效的,我的錯誤信息會顯示,但是我的程序的其餘部分仍然繼續,我相信生病不得不把我的一些邏輯與我的'if/else'混合在一起,我應該讓它工作。喜歡。謝謝。 – Zoxac

0

如果您在文本框失去焦點時運行了文本框驗證,那麼點擊取消按鈕將導致文本框失去焦點並因此在關閉之前進行驗證。

2

您需要設置:

AutoValidate = EnableAllowFocusChange

在含有形式​​。