как отображать форматированный текст, но иметь фактический текст - PullRequest
0 голосов
/ 29 марта 2010

У меня есть собственное текстовое поле, которое наследует System.Windows.Forms.TextBox
Я пытаюсь отобразить тексты вроде 5000000 в формате ==> 5 000 000 но проблема в том, что Control.Text должен вернуть 5000000, но он должен отображать 5 000 000.

Я знаю, что это WTF, но мне это действительно нужно, и я не мог много гуглить, потому что мой родной язык не английский (и любой может получить его из моей грамматики, и мне жаль)

Ответы [ 5 ]

1 голос
/ 29 марта 2010

(Примечание: у меня нет времени, чтобы найти правильные названия методов, но, надеюсь, я достаточно близко, чтобы понять ...)

Создание пользовательского элемента управления, производного от TextBox.

Добавьте обработчики в элемент управления для событий фокуса (или лучше переопределите методы для OnFocus / OnBlur). Когда элемент управления теряет фокус, сохраните текущий текст в закрытой переменной (скажем, OriginalText) и обновите фактический текст до вашей отформатированной версии. Когда элемент управления получает фокус , восстановите исходный текст.

1 голос
/ 29 марта 2010

Если вы хотите получить ее, преобразуйте отображаемую строку в целое число, используя int.Parse и CultureInfo.CurrentCulture, затем преобразуйте ее обратно в строку, используя ToString и CultureInfo.InvariantCulture.

1 голос
/ 29 марта 2010

Вы можете использовать свойство тега, как Андрей предложил , и обновить значение свойства тега в событии TextChange.

0 голосов
/ 29 марта 2010

Значение origianl можно сохранить в свойстве (объекте) Tag.

0 голосов
/ 29 марта 2010

использовать свойство Tag, которое есть у каждого элемента управления

...