簡體   English   中英

如何將光標定位在蒙版文本框的文本末尾?

[英]How to position cursor at the end of text on a masked textbox?

我正在使用帶有電話號碼掩碼的蒙版文本框,如果單擊該控件,則無論鼠標單擊何處,都會設置光標位置。 我想覆蓋游標的默認定位,以便:

  1. 如果未輸入文本,則光標位於文本框的開頭。

  2. 如果已輸入文本並單擊控件,則將光標定位在最后輸入的數字之后。

有沒有辦法做到這一點?

編輯

有人建議使用此代碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM