2017-03-27 91 views
1

如何在Textbox處於焦點時單擊可鏈接/按鈕時停止文本框離開事件?在丟失焦點時防止文本框離開事件

我有一個文本框TextBox1。在離開事件時,我必須驗證它的文本。並根據它的文本,我必須填充下一個文本框TextBox2的建議。

所以在這個過程中,當我點擊一個鏈接標籤[這是因爲不同的原因],而TextBox1是焦點,它正在發射離開事件[這是顯而易見的],並調用驗證功能[這是不應該被稱爲 - 因爲用戶完成輸入後沒有離開文本框 - 它是由可鏈接點擊觸發的]。

我試圖取消訂閱在鏈接標籤的點擊事件上留下事件,但這並沒有幫助,因爲離開事件在第一時間被解僱。

在這種情況下應該做什麼?

編輯: 發佈相關的代碼,

我有同一個事件處理兩個文本框

private void txtBox_Leave(object sender, EventArgs e) 
    { 
     TextBox textBox = sender as TextBox; 
     textBox.Visible = false; 

      #region TextBox 1 
      if (textBox.Equals(txtBox1)) 
      { 
       //Text Box 1 validation 
       //Populating Suggestions for TextBox2 
       //Passing focus on Textbox 2 
      } 
      #endregion 
      #region TextBox 2 
      else if (textBox.Equals(txtBox2)) 
      { 
       //Text Box 2 validation 
      } 
      #endregion 
    } 

正如我前面提到的,鏈接的標籤是有不同的,我不能禁用或在文本框上操作時將其隱藏。

的一個現象是, 當我點擊鏈接標籤,文本框的Leave事件提高第一,之後點擊鏈接標籤的事件,所以我們不能執行任何邏輯(如退訂文本框的假事件或別的東西)在Link-Label的點擊事件上 - 就像我們不想要的那樣完成驗證過程。

+0

您是否正在使用的WinForms,WPF,...? (您應該將其添加到標籤列表中)。 – samosaris

+0

@SamusArin我正在使用winForms。 – Amit

+0

您可以請發佈相關代碼,特別是TextBox離開事件處理程序和驗證程序嗎? – samosaris

回答

1

當你點擊link label時,它變成了集中控制。你可以做的是 - 在textbox1_leave事件處理程序中找到表單的重點控制。如果它是而不是link label那麼應該只完成填充建議textbox2的功能。

這個環節應該是有助於你找出形式的集中控制 - What is the preferred way to find focused control in WinForms app?

+0

是的,我也在沿着這些線路來思考一些事情,聽起來好像驗證是從離開事件無條件地發射出去的,但仍然希望看到代碼確保沒有其他事情發生。 – samosaris

+0

@SamusArin,是的。驗證正在無條件解僱。無論Arpit如何提出,在這種情況下,它都會幫助我。 – Amit

相關問題