Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> textbox с вводом только чисел, textbox с вводом только чисел  
:(
    Опции темы
allx86
Дата 19.5.2007, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.5.2007

Репутация: нет
Всего: нет



Наверняка каждому однажды приходилось решать проблему ввода чисел в textbox 
(чтобы могли вводиться только числа и разделитель - наподобие textbox стандартного калькулятора windows). 
Хотелось бы посмотреть и сравнить различные решения на С#. Кто как делает?




PM MAIL   Вверх
Mymik
Дата 19.5.2007, 08:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 1
Всего: 78



allx86, а можно узнать это где ???
Допустим в asp.net это делается с помощью JS
Код

function checkInput(event){
    if(((event.charCode > 57) || (event.charCode < 47)) && (event.keyCode == 0) && (!event.ctrlKey)){return!1;}
}

А если в виндоус, то там же есть событие по которому текст еще не попал в форму, но в этом событии ты можешь получить текст. Там вот и фильтруй это дело.

Если ты хочешь чтобы текст мог вводится, но при этом программа не пропускала его. То используй Regex. ставишь на поля валидатор и пока пользователь не введет текст соответствующий шаблону, программа дальше не станет работать.


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
Mymik
Дата 19.5.2007, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 1
Всего: 78



да. А в Windows вот решение -->> http://forum.vingrad.ru/forum/topic-151989.html


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
allx86
Дата 19.5.2007, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.5.2007

Репутация: нет
Всего: нет



Цитата

allx86, а можно узнать это где ???

ИМХО, на каждый текстбокс должны быть наложены ограничения на вводимые значения, в соответствии с логикой программы.
Это один из примеров ограничений.

Цитата

да. А в Windows вот решение -->> http://forum.vingrad.ru/forum/topic-151989.html
 

Немного не то. Там не вводится DecimalSeparator


Хорошо, поставлю вопрос по-другому:

Как реализовать функциональность textbox стандартного калькулятора Windows на С#.

PM MAIL   Вверх
Сарт
Дата 19.5.2007, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: 1
Всего: 0



Надеюсь это тебя устроит:

Для запрещения ввода в textbox любых даннных кроме цифр мы должны в обработчике KeyPress для textbox'а присвоить свойству Handled передаваемого параметра типа System.Windows.Forms.KeyPressEventArgs значение true.

Вот пример кода:

     
Код

   private void textBox1_KeyPress(object sender,
System.Windows.Forms.KeyPressEventArgs e)
        {
            // Если это не цифра.
            if(!Char.IsDigit(e.KeyChar))
            {
                // Запрет на ввод более одной десятичной точки.
                if(e.KeyChar != '.' || textBox1.Text.IndexOf(".") != -1)
                {
                    e.Handled = true;
                }
            }
        }
Строка

...
Код

if(e.KeyChar != '.' || textBox1.Text.IndexOf(".") != -1)
...


тут нужна для того, чтобы разрешить ввод десятичного разделителя (точки в данном случае) - причем только одного: если десятичный разделитель уже существует, то вводить второй заперщено.

--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
Mymik
Дата 19.5.2007, 15:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1474
Регистрация: 12.5.2006
Где: Lamer-центер

Репутация: 1
Всего: 78



Цитата(allx86 @  19.5.2007,  13:55 Найти цитируемый пост)
ИМХО, на каждый текстбокс должны быть наложены ограничения на вводимые значения, в соответствии с логикой программы.
Это один из примеров ограничений.

я имел ввиду в какой отрасли программирования ты это используешь ??? типа Windows, или asp.net ??? потому что в этих двух отраслях по разному реализуется данный функционал.
Цитата(allx86 @  19.5.2007,  13:55 Найти цитируемый пост)
Немного не то. Там не вводится DecimalSeparator

Не хочу показаться грубым. Но разве мы обязаны за тебя писать код ??? вообще-то тебе дали яркий пример как это реализовываться. А дописать пару строк кода самому...  smile 


--------------------
ICQ ::            857-857
E-mail ::         mymik[at]inbox[dot]ru 
HomaPage ::  http://localhost/

:to_become_senile  :this
PM MAIL WWW ICQ   Вверх
allx86
Дата 19.5.2007, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.5.2007

Репутация: нет
Всего: нет



Цитата

я имел ввиду в какой отрасли программирования ты это используешь ???

Windows.Forms

Цитата

Не хочу показаться грубым. Но разве мы обязаны за тебя писать код ???


Никто никому ничего не обязан. Если не хочется отвечать, то никто не заставляет.

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





Это сообщение отредактировал(а) allx86 - 19.5.2007, 16:20
PM MAIL   Вверх
Сарт
Дата 20.5.2007, 03:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 159
Регистрация: 29.4.2006

Репутация: 1
Всего: 0



А ты хочешь сразу космолет построить?+ тот код что я кинул- это само колесо. Тебе осталось его только суметь прикрутить.
--------------------
[color=purple][/color]Died.Of course, System.StackOverflow 
PM MAIL   Вверх
archeg
Дата 20.5.2007, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 612
Регистрация: 6.1.2007
Где: Киев

Репутация: 11
Всего: 27



Цитата(allx86 @  19.5.2007,  15:59 Найти цитируемый пост)
Разумеется, я могу и сам написать, но на  это уйдет время, которое я могу потратить на решение функциональных задач, а не на  техническую задачу, которая уже неоднократно решена.  И заново изобрести колесо. 

Несмотря на идею многоразового использования кода такое бывает. Кто-то придумал колесо. Потом его придумал ты. И несмотря на то, что ты придумал тоже самое колесо, у тебя оно имеет четыре спицы - у него три. И неизвестно, какое колесо выйдет прочнее.......

Это сообщение отредактировал(а) archeg - 20.5.2007, 10:29


--------------------
ИМХО задница есть универсальный интерфейс. Ибо через задницу можно сделать абсолютно ВСЕ (bash.org.ru)

Дядька всегда можно спросить в аське, если не задалбывать - не откажет smile
И вообще, на самом деле я студент, и ненавижу обращение на "Вы") Тут все свои  ;)
PM MAIL ICQ Jabber   Вверх
allx86
Дата 20.5.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 19.5.2007

Репутация: нет
Всего: нет



Цитата

Несмотря на идею многоразового использования кода такое бывает. Кто-то придумал колесо. Потом его придумал ты. И несмотря на то, что ты придумал тоже самое колесо, у тебя оно имеет четыре спицы - у него три. И неизвестно, какое колесо выйдет прочнее.......


В том то и дело, что хотелось бы сравнить различные варианты, кто как делает. Выбрать из каждого метода те моменты, которые понравились и изобрести уже собственное "колесо", возможно уже и с пятью спицами.

Цитата

А ты хочешь сразу космолет построить?+ тот код что я кинул- это само колесо. Тебе осталось его только суметь прикрутить.


И вот уже это полученное колесо "прикручивать".
PM MAIL   Вверх
SherbAnt
Дата 20.5.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 12.1.2007

Репутация: 1
Всего: 3



Я использовал http://www.gotdotnet.ru/Downloads/Examples/279046.aspx


А насчет того чтобы не изобретать велосипед -> всё правильно.


Цитата(mr.DUDA @  28.10.2006,  11:44 Найти цитируемый пост)
CodeProject - куча бесплатных примеров на .NET, туториалов и контролов.

www.codeproject.net
PM MAIL Skype   Вверх
Azzdorf
  Дата 23.5.2007, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 190
Регистрация: 29.3.2007

Репутация: нет
Всего: нет



тут про MasketTextBox есть инфо http://www.rsdn.ru/article/dotnet/WinForms20.xml#EMIAE
--------------------
Иногда шаг вперед - это результат хорошего пинка под зад.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0817 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.