2017-03-15 27 views
1

我可以突出一個人MaskedTextBox中的文本時,它就會使用重點:如何突出控制何時獲得焦點?

this.myTextBox.SelectAll(); 

但是,我想,當鼠標點擊事件發生時,這樣做對所有MaskedTextBox中。而不是增加每個MaskedTextBox中30個人事件的方法,我想選擇所有MaskedTextBox中,並有一個事件的方法來照顧它,即:

private void MouseClickedForMaskedTextBox(object sender, MouseEventArgs e) 
{ 
    this.ActiveControl.SelectAll(); 
} 

但全選不適用於this.ActiveControl。有沒有辦法避開它?

+0

創建文本框從繼承的用戶控件,穿上它的靜態方法或屬性,從那裏proceeed? – Trey

回答

2

sender將成爲活動的目標。

你可以施放sender

MaskedTextBox maskedTextBox = sender as MaskedTextBox; 
if (maskedTextBox != null) { maskedTextBox.SelectAll(); } 

或者在C#7,

if (sender is MaskedTextBox maskedTextBox) 
{ 
    maskedTextBox.SelectAll(); 
} 

另一個改進是使用TextBoxBase,它會與TextBoxRichTextBox正常工作。

+0

在第一個選項中,它錯誤「不能隱式地將類型'System.Windows.Forms.MaskedTextBox'轉換爲'bool'。在第二個選項中,它導致3個錯誤」)期望「在MaskedTextBox結束時」。預期「在maskedTextBox的結尾處,並且」}預計「在maskedTextBox的末尾。 – itchibahn

+0

玩過第一個選項後,我刪除了」if「條件,並且它可以正常工作!!!!非常感謝!!!! – itchibahn

+0

@ itchibahn我修復了這個情況 - 我的javascript顯示。 –

1

將下面的代碼在窗體的構造函數:

 foreach (Control c in Controls) 
     { 
      if (c is TextBox) 
      { 
       TextBox tb = c as TextBox; 
       tb.GotFocus += delegate { tb.SelectAll(); }; 
      } 
     } 
相關問題