powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / текс бокс. ввод чисел
22 сообщений из 22, страница 1 из 1
текс бокс. ввод чисел
    #37577150
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
допустим, есть текстовые поля. Например, нужно, чтобы пользователь вводил только цифры, а после нажатия запятой, или точки, только две.
кинул на форму маск эдит, в Mask указал 00000,00, и знаете, он оказался глючным. Нужно вводить обязательно 00000 чтобы ввести 6 - нужно набрать 00006. Очень запутанно. Может имеет смысл текст бокс использовать?

---------------------------------------------------------
SET @@verSION = 'Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86) Feb 9 2007 22:47:07 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition on Windows NT 6.0 (Build 6002: Service Pack 2) '
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37577156
Syrex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если ввести маску 99999,99
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37577306
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
даже, если и так. Чтобы ввести , например, 11,11 - нужно
набрать 000, потом 1111 без запятой., или же клацнуть ___сюда, после трёх подчёркиваний и набрать 1111
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37577459
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
        private void textBox16_KeyPress(object sender, KeyPressEventArgs e)
        {
            char[] allowch = { '\b' };
            if (e.KeyChar == ',' && ((TextBox)sender).Text.Length > 0 && !(((TextBox)sender).Text.Contains(','))) { e.Handled = false; return; }; 
            if (!Char.IsNumber(e.KeyChar) && !allowch.Contains(e.KeyChar)) e.Handled = true;
        }


обычным текстбоксом. как-то ещё надо сделать, что если есть запятая, и она = последнему символу - то добавить в конец ноль.
При потере фокуса что-ли..
Вот ещё вопрос.
Как мне теперь проще поступить?
у меня дохрена текстбоксов теперь будит, и вот этот обработчик практически каждому нужен .

мне this.textBox.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.textBox_KeyPress);
каждому элементу сделать после инициализации формы, или можно как-то свой класс сделать, и переопределить у него KeyPressEventHandler ?
По умолчанию буду первое делать.
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37577481
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, и как окончание работы с текстбоксом поймать? что за событие?
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37577491
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_Kartmann,

не понимаю ваших мучений для ввода чисел специально сделан NumberUpDown, MaskTextBox используется для ввода телефонных номеров и всякой подобной хрени
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37577533
LjAPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Erik_Kartmann,

Ввод только цифр, точку меняет на запятую.
Код: c#
1.
2.
3.
4.
5.
       private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9,\b,',','.']");
            if (e.KeyChar.ToString() == ".") e.KeyChar = char.Parse(",");
        }


А после запятой знаки можно округлять при получении значения, либо при потере фокуса элементом
Код: c#
1.
2.
3.
4.
        private void textBox1_Leave(object sender, EventArgs e)
        {
            textBox1.Text = Math.Round(double.Parse(textBox1.Text), 2).ToString();
        }
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37577544
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LjAPbErik_Kartmann,

Ввод только цифр, точку меняет на запятую.
Код: c#
1.
2.
3.
4.
5.
       private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = !System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(), @"[0,1,2,3,4,5,6,7,8,9,\b,',','.']");
            if (e.KeyChar.ToString() == ".") e.KeyChar = char.Parse(",");
        }


А после запятой знаки можно округлять при получении значения, либо при потере фокуса элементом
Код: c#
1.
2.
3.
4.
        private void textBox1_Leave(object sender, EventArgs e)
        {
            textBox1.Text = Math.Round(double.Parse(textBox1.Text), 2).ToString();
        }



=)) пипец, как народ любит изобретать велосипеды
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37577651
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationErik_Kartmann,

не понимаю ваших мучений для ввода чисел специально сделан NumberUpDown, MaskTextBox используется для ввода телефонных номеров и всякой подобной хрени
что-то он всё рано фигня какая-то. этими кнопками (вверх вниз ) я даже не знаю, нормалшьный человек пользоваться не будет.
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37577652
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Их отключить можно вообще?
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37577657
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pation=)) пипец, как народ любит изобретать велосипеды
я на этом форуме уже несколько лет назад спрашивал. Но я не помню свой бывший ник, ни название темы.
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37577756
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_KartmannpationErik_Kartmann,

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

кнопки кстати можно скрыть
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37577844
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как? Какой-нибудь прорисовкой?
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37577859
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_Kartmannкак? Какой-нибудь прорисовкой?

нет нужно немного рефлектором покопаться найти внутри контрол UpDownButtons
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37578133
GFX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_KartmannИх отключить можно вообще?

Код: c#
1.
2.
3.
4.
5.
6.
7.
public class NumericEditBox : NumericUpDown
    {
        public NumericEditBox()
        {
            Controls[0].Visible = false;
        }
    }



тоже воюю с этим контролом. у меня проблема если биндить на него свойство из T List<T> :)
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37578140
Фотография pation
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GFXтоже воюю с этим контролом. у меня проблема если биндить на него свойство из T List<T> :)

и что там не так?
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37578353
GFX
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pationGFXтоже воюю с этим контролом. у меня проблема если биндить на него свойство из T List<T> :)

и что там не так?

Обновление свойства происходит с запаздыванием.
инициализируем объект. свойство Koeff=0
ввожу в numericUpDown 1, нажимаю Enter, свойство Koeff=0
ввожу в numericUpDown 2, нажимаю Enter, свойство Koeff=1, почему то предыдущее
ввожу в numericUpDown 3, нажимаю Enter, свойство Koeff=2, почему то предыдущее

объект, в котором объявлено свойство Koeff реализует INotifyPropetyChanged

Добился требуемого результата, пока не сделал вот так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public class NumericEditBox : NumericUpDown
    {
        public NumericEditBox()
        {
                       
        }       

        protected override void OnValueChanged(EventArgs e)
        {
            foreach (Binding b in this.DataBindings)
            {
                if (b.PropertyName == "Value")
                {
                    b.WriteValue();
                }
            }
            base.OnValueChanged(e);
        }
}



Но мне это ОЧЕНЬ не нравится...грязный хак какой-то...
Cкажите пожалуйста, это правильно?
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37578540
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забил на этот нумерик. сделал текстбоксом.
Думаю людей будет сбивать эта запятая .
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37578972
Фотография _=ДОБРЫНЯ=_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_Kartmannзабил на этот нумерик. сделал текстбоксом.
Думаю людей будет сбивать эта запятая .

Я решил подобную проблему с помощью этого . На протяжении года работы никаких проблем.
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37582044
Erik_Kartmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот ещё вопрос. Допустим, есть маскедтекстбокс с форматом короткой даты.
00/00/0000

Если написать все символы - пятёрки, то есть даты такой не бывает - то я хочу, чтобы поле даты вообще очистилось.
А оно по умолчанию вообще фокус не теряет, и с него вообще никуда нельзя перейти, кроме как или правильную дату ввести.
...
Рейтинг: 0 / 0
текс бокс. ввод чисел
    #37584231
Фотография _=ДОБРЫНЯ=_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Erik_KartmannА вот ещё вопрос. Допустим, есть маскедтекстбокс с форматом короткой даты.
00/00/0000

Если написать все символы - пятёрки, то есть даты такой не бывает - то я хочу, чтобы поле даты вообще очистилось.
А оно по умолчанию вообще фокус не теряет, и с него вообще никуда нельзя перейти, кроме как или правильную дату ввести.
Тут только писать свой контрол.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
текс бокс. ввод чисел
    #38612133
RodeRebel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_=ДОБРЫНЯ=_,
TNumEditBox классная вещь, а как с него сделать dll-ку, чтобы только на нужном проекте использовать.

p.s. я еще не обладаю некими знаниями по созданию и внедрению пользовательских штучек.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / текс бокс. ввод чисел
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]