如何在聚焦时突出显示控件?

时间:2017-03-15 19:10:47

标签: c# winforms selectall

我可以使用以下方法突出显示单个MaskedTextBox中的文本:

this.myTextBox.SelectAll();

但是,当发生鼠标单击事件时,我想为所有MaskedTextBox执行此操作。我没有为每个MaskedTextbox添加30个单独的事件方法,而是选择所有MaskedTextBox并使用一个事件方法来处理它,即:

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

但SelectAll不适用于此.ActiveControl。有没有办法解决它?

3 个答案:

答案 0 :(得分:2)

sender将成为活动的目标。

你可以投射sender

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

或者在C#7中,

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

另一项改进是使用TextBoxBase,它也适用于TextBoxRichTextBox

答案 1 :(得分:1)

将以下代码放在表单的构造函数中:

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

答案 2 :(得分:0)

只需这样做:

private void maskedTextBox1_Enter(object sender, EventArgs e)
{
   this.BeginInvoke((MethodInvoker) delegate() {
   maskedTextBox1.SelectAll();
   });
}