| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB .NET > Отображение курсора(каретки) в TextBox |
| Автор: mxmaks 16.1.2011, 16:43 |
| Приветствую Всех и С Новым Годом! Вопрос в том, чтобы отобразить мигающий курсор (каретку) в конце вводимой информации в текстбоксах? Информация в textbox вводится с кнопок... (без клавиатуры) С клавиатуры курсор отображается нормально, а с кнопок пропадает... В какую обработку его вставить... В VB6 были Hide.Caret и Show.Caret, как реализовать на VB.NET... |
| Автор: diadiavova 16.1.2011, 18:17 |
| mxmaks, Просто когда ты нажимаешь на кнопку фокус переводится с текстбокса на нее. Верни его обратно и все. |
| Автор: mxmaks 16.1.2011, 21:44 |
| Благодарю за отклик, но попытался осмыслить... не получилось... txt.Focus->btn.Focus->txt.Focus... Как-то так, или я глючу...? |
| Автор: diadiavova 16.1.2011, 21:53 |
| Автор: mxmaks 16.1.2011, 22:26 |
| После каждого нажатия на btn?... Шутка: этого хрена с бугра в нашей деревне всякий знает..., а я с райцентра... А если серьезно, есть функция Caret, думаю, ее надо применять или можно без нее... В VB6 были Hide.Caret и Show.Caret... работали...(вводишь букву, а курсор как положено справа моргает, видно где находишься...) В VB.NET как-то по другому, в MSDN есть инфа, но с ней еще не экспериментировал, подумал кто-нибудь сталкивался с этим... |
| Автор: mxmaks 16.1.2011, 23:28 |
| Благодарю... Буду пробовать... |
| Автор: diadiavova 16.1.2011, 23:36 |
| Да, и еще одно. Как я понимаю, у тебя будет несколько кнопок, выполняющих одинаковую работу(добавление символа в текстбокс). В данном случае нет смысла обрабатывать клики отдельно, можно вместо этого просто свойству Tag каждой кнопки присвоить тот символ, который она будет добавлять и написать один обработчик для всех кнопок, который будет добавлять значение свойства Tag отправителя события в текстбокс и переводить фокус. |
| Автор: mxmaks 17.1.2011, 18:35 |
| Приветствую! Все сделал как Вы посоветовали, все работает, только не могу убрать выделение (синий фон, как в системе...) Хотелось, чтобы был только курсор, а выделение сбивает и раздражает... Ищу в MSDN, может есть готовая идея... А кнопки работают в одном обработчике... |
| Автор: diadiavova 17.1.2011, 23:35 |
| А ты как текст добавляешь? Если присвоением значения свойству текст, то так и должно быть. Добавляется текст методом AppendText. А выделение не снимается, а просто устанавливается его начало и длина (свойства SelectionStart и Selection Lenght, если мне не изменяет склероз). |
| Автор: mxmaks 18.1.2011, 22:06 |
| Приветствую! Поясню, пишу своему мальчишке "обучалку": форма-текстбокс-кнопки (с буквами и цифрами). Работа мышью (жмет кнопку с буквой или цифрой) и пишет слова или решает примеры... Хотелось, чтобы было красиво, да и самому осмыслить и подучиться... В vb6 вроде все было нормально, а в vb.net споткнулся... Добавляю как String, потом преобразую в Val (если примеры-вычисления) И, кстати, почему в примере 0.4+0.3= не решает, как будто нет одного значения, остальное все решает... Да, текст выделяется, но курсор в конце, а выделение не снимается. При вводе с "клавы" нормально (курсор в конце, текст не выделен). Свойство HideSelection (TextBox) работает, но криво... |
| Автор: diadiavova 18.1.2011, 22:33 |
| mxmaks, ты так и не написал как добавляешь текст. Что тут можно сказать? Как можно решать проблему, если нет кода, который ее вызвал. Насколько я помню, при добавлении текста с помощью AppendText этой проблемы быть не должно. Это опять-таки зависит от того, каким способом ты это решаешь и текстбоксы тут явно не причем. Но думаю, что скорей всего надо в качестве разделителя десятичных разрядов использовать запятую. |
| Автор: mxmaks 18.1.2011, 23:14 |
| Текст добавляю как стринг, кнопке присвоен символ буквы... Вычисляет только больше 1 с точкой, перевод из стринга через Val ... Посмотрю на AppendText |
| Автор: diadiavova 19.1.2011, 03:06 | ||
Честно говоря, не знаю как эта функция работает, так что ничего сказать не могу. В дотнете лучше использовать Double.Parse или Double.TryParse, тогда можно будет установить и параметры преобразования(например точку или запятую в качестве разделителя). |
| Автор: mxmaks 19.1.2011, 20:38 | ||
| Добрый вечер! Посмотри код, может что-то проявится...
... |
| Автор: diadiavova 19.1.2011, 20:51 | ||
|
| Автор: mxmaks 22.1.2011, 11:52 |
| Приветствую! По поводу отображения курсора вопрос можно считать решенным, работает, только подшлифовать... А вот считать почему-то не хочет... Такое ощущение, что округляется... 0.51+0.1=0,61 , а 0.5 +0.1=... Это вариант с использованием Val(txt1.Text), а вариант с Double.Parse(txt1.Text) не воспринимает, с целыми числами работает... |
| Автор: diadiavova 22.1.2011, 15:47 | ||
Этот вариант учитывает региональные стандарты. По умолчанию используются те, которые соответствуют настройкам операционной системы. Если в системе все настройки русские, то и надо использовать тот разделитель, который у нас принят, а именно - запятую(а не точку). Это можно изменить, использовав перегрузку метода Parse, принимающую аргумент типа IFormatProvider, только зачем? |
| Автор: mxmaks 22.1.2011, 22:05 |
| Добрый вечер! Нашел ошибку с вычислениями (проводил проверку на инфу в текстбоксах, If x And y <> 0 Then...), закомментил и все считает ... Буду думать, как проверять наличие значений в текстбоксах... В принципе, тему можно закрывать, ответы исчерпывающие. Благодарю, приятно было общаться. Удачи по жизни! |
| Автор: diadiavova 22.1.2011, 22:22 | ||||
Заметь: в моем примере этой строки не было. Почему тебе все время так сильно хочется сделать по-своему? У меня ведь есть простая проверка корректности ввода. Еще лучше для этой цели использовать TryParse вместо Parse. А что там думать?
Тогда не забывай помечать вопрос как решенный. |
| Автор: mxmaks 23.1.2011, 21:21 |
| Последний штрих_если есть функция проверки корректности ввода, то как она называется... Будь добр, подскажи... |
| Автор: diadiavova 23.1.2011, 23:44 | ||
В смысле? У тебя ввод будет корректным, если парсинг числа пройдет успешно. |
| Автор: Freyzer 25.1.2011, 17:48 | ||
Хоть тема и помеченна как решенная. Функции ты пишешь сам, сам же им и даешь имена. Для проверки вводимости корректных даных используються валидаторы. Еще есть понятие регулярных выражений и использование метасимволов. |
| Автор: diadiavova 25.1.2011, 19:10 |
Использовать регулярки для проверки возможности преобразования строки в число - это все равно, что микроскопом гвозди забивать. |
| Автор: Freyzer 26.1.2011, 13:17 | ||
Да, не спорю, просто я о тех и о других в комплексе впервые узнал, вот и вошло в привычку раз пишу о метасимволах упоминать и о регулярных выражениях. |
| Автор: diadiavova 26.1.2011, 13:32 |
О каких метасимволах речь? |
| Автор: Freyzer 27.1.2011, 12:03 |
| ДВ, ты мастер, я говорил вот об http://ru.wikipedia.org/wiki/Regex, тебе удалось выбить меня из колеи. А разве нечто такое же не используеться в десктоповых приложениях, для проверки вводимости данных? |
| Автор: diadiavova 27.1.2011, 12:13 | ||
Ну это регулярки, а метасимволы это что?
Регулярки можно и в десктопе использовать. |
| Автор: Freyzer 27.1.2011, 12:56 |
| Там и метасимволы упоминаються, все в комплексе |