[英]How to position cursor at the end of text on a masked textbox?
我正在使用帶有電話號碼掩碼的蒙版文本框,如果單擊該控件,則無論鼠標單擊何處,都會設置光標位置。 我想覆蓋游標的默認定位,以便:
如果未輸入文本,則光標位於文本框的開頭。
如果已輸入文本並單擊控件,則將光標定位在最后輸入的數字之后。
有沒有辦法做到這一點?
編輯
有人建議使用此代碼:
PhoneNumber.SelectionStart = PhoneNumber.Text.Length;
但這不起作用,因為掩碼文字包含在長度計數中,這會搞砸光標定位。 我知道您可以設置textmaskformat屬性以排除文字,但計數仍然不正確,因為文字仍然顯示。
您可以使用MaskedTextProvider
類的LastAssignedPosition
屬性,該屬性可作為MaskedTextBox
的屬性使用:
maskedTextBox1.SelectionStart
= maskedTextBox1.MaskedTextProvider.LastAssignedPosition + 1;
maskedTextBox1.SelectionLength = 0;
這是一個非常古老的問題,但是今天我試圖在我的winforms
應用程序中實現相同的功能時遇到了它。
接受的答案確實有效,但是將光標定位在位置0
,即使開頭有掩碼文字: XYZ______
。
我能夠通過在MaskedTextProvider
上使用FindUnassignedEditPositionFrom()
方法解決此問題:
private void TextBox_Click(object sender, EventArgs e)
{
int startPos = this.textBox.MaskedTextProvider.FindUnassignedEditPositionFrom(this.textBox.MaskedTextProvider.LastAssignedPosition + 1, true);
this.textBox.Select(startPos, 0);
}
這使用與接受的答案相同的LastAssignedPosition
,但另外考慮了可能出現在開頭的任何不可編輯的文本 - 簡而言之,這會將光標移動到可用的第一個可編輯位置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.