2013-12-17 3 views
0

Я пишу приложение на C# с Visual Studio 2012, и мне нужно форматировать текст ввода с помощью MaskedTextBox. Пользователь будет вводить путь к папке в текстовое поле, но поскольку путь к папке относится к другому пути, мне нужно, чтобы он начинался с «. \», Но мне все равно, как долго путь.Любые символы - Маскированный текстовый ящик

Прямо сейчас, у меня установлена ​​маска для коробки до \.\\CCCCCCCCCCCCCCCCCC. Это отлично работает, за исключением того факта, что, когда пользователь нажимает на это поле, он помещает курсор, где они нажимают, а не на начало поля.

Есть ли способ установить маску, по-прежнему помещенную в ". \", Но не устанавливать ограничения на символы, которые появляются после нее?

Или есть способ, которым я пропускаю?

EDIT: Подробнее

Так что я попробовал пару рекомендуется вещи, но они, кажется, не работают. Ответ here не работает. Хотя я могу настроить его на то, чтобы перейти к этой точке выбора, когда я нажимаю на поле, он будет туда каждый раз, когда вам нужно щелкнуть по квадрату. Поэтому вы не можете выбрать весь блок или отредактировать часть того, что вы набрали, что еще хуже для удобства использования.

Я также попробовал метод, предложенный Адельмо. Я сделал еще обработчик примерно так:

public Form1() 
{ 
    InitializeComponent(); 
    refreshList(); 
    this.textBoxPrintFolder.GotFocus += new EventHandler(textBoxPrintFolder_GotFocus); 

} 
private void textBoxPrintFolder_GotFocus(object sender, EventArgs e) 
{ 
    this.textBoxPrintFolder.Select(2, 0); 
} 

Это работает, когда обходе к коробке, но, видимо, щелкнув на поле не выходит в случае GotFocus.

Я также попытался использовать событие MouseEnter. Пока он работает, требуется несколько секунд, прежде чем он переместится. Не идеально.

Любая помощь была бы принята с благодарностью.

+0

Это на самом деле не делать то, что мне нужно, и это почти делает его менее полезным. Теперь, если вы попытаетесь вернуться или выбрать что-либо, это только ухудшится. –

ответ

0

Может быть, с помощью OnFocus событие:

Вы можете управлять положением курсора (и выбор) по TextBox.SelectionStart и TextBox.SelectionLength свойствами.

Пример, если вы хотите переместить курсор, прежде чем 3-й набора символов SelectionStart = 2 и SelectionLength = 0.

http://social.msdn.microsoft.com/Forums/en-US/04362a62-8cbf-4d86-a1bc-2aba8e4978ca/cursor-position-in-textbox

Надеются, что это поможет вам

+0

Несчастливо это не делает то, что мне нужно. Я могу настроить это для работы всякий раз, когда я перехожу в окно, но не тогда, когда я нажимаю на него. И я не могу этого делать каждый раз, когда я нажимаю на него. –

Смежные вопросы