问题
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?
回答1:
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.
回答2:
Put the following code in the form's constructor:
foreach (Control c in Controls)
{
if (c is TextBox)
{
TextBox tb = c as TextBox;
tb.GotFocus += delegate { tb.SelectAll(); };
}
}
回答3:
Simply do that:
private void maskedTextBox1_Enter(object sender, EventArgs e)
{
this.BeginInvoke((MethodInvoker) delegate() {
maskedTextBox1.SelectAll();
});
}
来源:https://stackoverflow.com/questions/42818701/how-to-highlight-the-control-when-it-gets-focus