我可以使用以下方法突出显示单个MaskedTextBox中的文本:
this.myTextBox.SelectAll();
但是,当发生鼠标单击事件时,我想为所有MaskedTextBox执行此操作。我没有为每个MaskedTextbox添加30个单独的事件方法,而是选择所有MaskedTextBox并使用一个事件方法来处理它,即:
private void MouseClickedForMaskedTextBox(object sender, MouseEventArgs e)
{
this.ActiveControl.SelectAll();
}
但SelectAll不适用于此.ActiveControl。有没有办法解决它?
答案 0 :(得分:2)
sender
将成为活动的目标。
你可以投射sender
:
MaskedTextBox maskedTextBox = sender as MaskedTextBox;
if (maskedTextBox != null) { maskedTextBox.SelectAll(); }
或者在C#7中,
if (sender is MaskedTextBox maskedTextBox)
{
maskedTextBox.SelectAll();
}
另一项改进是使用TextBoxBase
,它也适用于TextBox
和RichTextBox
。
答案 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();
});
}