Search code examples
c#winformsselectall

How to highlight the control when it gets focus?


I can highlight the text in an individual MaskedTextBox when it gets focus using:

this.myTextBox.SelectAll();

But, I want to do it for all MaskedTextBox when a mouse click event occurs. Instead of adding 30 individual event method for each MaskedTextbox, I want to select all MaskedTextBox and have one event method to take care of it, ie:

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

But SelectAll is not available for this.ActiveControl. Is there a way to get around it?


Solution

  • sender will be the target of the event.

    You could cast sender:

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

    Or in C# 7,

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

    Another improvement is to use TextBoxBase and it will work with TextBox and RichTextBox as well.