ben*_*rce 21 .net user-interface textbox winforms
我希望能够覆盖在插入的文本框中定位插入符的默认行为.
默认情况下将插入符号放在单击鼠标的位置,屏蔽文本框已包含由于掩码而导致的字符.
我知道你可以隐藏这篇文章中提到的插入符号,当控件获得焦点时,是否有类似于在文本框开头放置插入符号的东西.
Abb*_*bas 29
这应该做的伎俩:
private void maskedTextBox1_Enter(object sender, EventArgs e)
{
this.BeginInvoke((MethodInvoker)delegate()
{
maskedTextBox1.Select(0, 0);
});
}
Run Code Online (Sandbox Code Playgroud)
Ish*_*eel 10
要改进Abbas的工作解决方案,请尝试以下方法:
private void ueTxtAny_Enter(object sender, EventArgs e)
{
//This method will prevent the cursor from being positioned in the middle
//of a textbox when the user clicks in it.
MaskedTextBox textBox = sender as MaskedTextBox;
if (textBox != null)
{
this.BeginInvoke((MethodInvoker)delegate()
{
int pos = textBox.SelectionStart;
if (pos > textBox.Text.Length)
pos = textBox.Text.Length;
textBox.Select(pos, 0);
});
}
}
Run Code Online (Sandbox Code Playgroud)
此事件处理程序可以与多个框重复使用,并且不会消除用户将光标定位在输入数据中间的能力(即,当框不为空时,不会将光标强制置于零位置).
我发现这更接近于模仿标准文本框.只剩下毛刺(我可以看到)是在'Enter'事件之后,如果xe按住鼠标并拖动到最后,用户仍然可以选择其余的(空)掩码提示.
小智 6
这是对MaskedTextBoxes默认行为的重大改进.谢谢!
我对Ishmaeel的出色解决方案做了一些改动.我更喜欢只在需要移动光标时才调用BeginInvoke.我还从各种事件处理程序调用该方法,因此输入参数是活动的MaskedTextBox.
private void maskedTextBoxGPS_Click( object sender, EventArgs e )
{
PositionCursorInMaskedTextBox( maskedTextBoxGPS );
}
private void PositionCursorInMaskedTextBox( MaskedTextBox mtb )
{
if (mtb == null) return;
int pos = mtb.SelectionStart;
if (pos > mtb.Text.Length)
this.BeginInvoke( (MethodInvoker)delegate() { mtb.Select( mtb.Text.Length, 0 ); });
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19415 次 |
| 最近记录: |