2017-03-15 28 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(); }; 
      } 
     } 
相关问题