2017-03-15 8 views
1

私はそれを使用してフォーカスを取得したときに、個々のMaskedTextBoxでテキストをハイライト表示することができます:私は、マウスのクリックイベントが発生したときに、すべてのMaskedTextBoxのためにそれをやってみたい、フォーカスを取得したときにコントロールを強調表示する方法は?

this.myTextBox.SelectAll(); 

しかし。代わりに、各MaskedTextboxための30の個々のイベントメソッドを追加するので、私はすべてのMaskedTextBoxを選択して、それの世話をする一つのイベントメソッド、つまり持っていると思います:

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

をしかしの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

第1のオプションでは、「System.Windows.Forms.MaskedTextBox型を暗黙的に 'bool'に変換できません.2番目のオプションでは、3つのエラーが発生します」MaskedTextBoxの最後に "expected" maskedTextBoxの最後に "expected"があります。 – itchibahn

+0

第1のオプションで遊んだ後、私は "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(); }; 
      } 
     } 
関連する問題