Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 19.02.2015
Сообщений: 5
1

Не срабатывает KeyPress у textBox

03.07.2015, 11:06. Показов 3883. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
Изучаю C# и Windows Forms. Рассматривал примеры из книги Культина.
Вот, например, есть программа для сохранения курса валют в файл. Программа работает, но с одним недочетом - не выполняется проверка на ввод данных (только числа должны вписываться), хотя это прописано в коде.
Из двух событий для окна textBox1 (textBox1_KeyPress и textBox1_TextChanged) срабатывает только второе.

Полный код ниже.
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
namespace Пример_14_курс
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
 
            button1.Enabled = false;
        }
 
        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
        {
            if ((e.KeyChar >= '0') && (e.KeyChar <= '9'))
            {
                return;
            }
 
            if (e.KeyChar == '.')
            {
                e.KeyChar = ',';
            }
 
            if (e.KeyChar == ',')
            {
                if (textBox1.Text.IndexOf(',') != -1)
                {
                    e.Handled = true;
                }
                return;
            }
 
            if (Char.IsControl(e.KeyChar))
            {
                if (e.KeyChar == (char)Keys.Enter)
                    button1.Focus();
                return;
            }
 
            e.Handled = true;
        }
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (textBox1.Text.Length == 0)
                button1.Enabled = false;
            else
                button1.Enabled = true;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
            double kurs;
            DateTime date;
 
            date = dateTimePicker1.Value;
            kurs = System.Convert.ToDouble(textBox1.Text);
 
            System.IO.FileInfo fi = new System.IO.FileInfo(Application.StartupPath + "\\usd.txt");
 
            System.IO.StreamWriter sw;
 
            if (fi.Exists)
                sw = fi.AppendText();
            else
                sw = fi.CreateText();
 
            sw.WriteLine(date.ToShortDateString());
            sw.WriteLine(kurs.ToString("N"));
 
            sw.Close();
 
            button1.Enabled = false;
            textBox1.Enabled = false;
        }
 
        private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
        {
            textBox1.Enabled = true;
            textBox1.Clear();
            textBox1.Focus();
        }
    }
}


Подскажите, если не затруднит, что я не так прописал или это какая-то ошибка в книге...
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.07.2015, 11:06
Ответы с готовыми решениями:

Событие KeyPress у TextBox. Как сделать один формат для различных TextBox?
Есть много TextBox'ов, в которые нужно вводить только числа, и больше никаких символов. На...

KeyPress не срабатывает
Может хоть на этот вопрос ответят.. уже отчаялась,обрыла весь интернет и ничего не нашла. Есть...

Не срабатывает событие KeyPress
private void textBox2_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e) { ...

Keypress для textbox
В textbox вводятся слова в одну строку, разделенные запятой,содержащие только заглавные латинские...

4
6 / 6 / 4
Регистрация: 02.05.2012
Сообщений: 40
03.07.2015, 11:31 2
с чего вы взяли что textBox1_KeyPress у вас не срабатывает? просто провертеть это событие, например заменив на:
C#
1
2
3
4
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
MessageBox.Show("Hello world!");
}
1
0 / 0 / 0
Регистрация: 19.02.2015
Сообщений: 5
03.07.2015, 12:01  [ТС] 3
Да в том то и дело, что пробовал менять на другое. Проверю еще раз.
0
6 / 6 / 4
Регистрация: 02.05.2012
Сообщений: 40
03.07.2015, 12:30 4
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

)))))попробуйте тогда изменить содержимое конструктора Form1 на следующее:
C#
1
2
3
4
5
6
 public Form1()
        {
            InitializeComponent();
            this.textBox1.KeyPress +=new KeyPressEventHandler(textBox1_KeyPress);
            button1.Enabled = false;
        }
1
0 / 0 / 0
Регистрация: 19.02.2015
Сообщений: 5
03.07.2015, 19:11  [ТС] 5
кофе с инеем, последний ваш совет помог.
C#
1
2
3
4
5
6
 public Form1()
        {
            InitializeComponent();
            this.textBox1.KeyPress +=new KeyPressEventHandler(textBox1_KeyPress);
            button1.Enabled = false;
        }
Все работает. Большое человеческое спасибо))
0
03.07.2015, 19:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.07.2015, 19:11
Помогаю со студенческими работами здесь

Обработка KeyPress для нескольких TextBox C++
на форме имеется множество текстбоксов, я написал проверку на ввод только чисел, привязал к...

Не работает событие KeyPress для TextBox
Подскажите пожалуйста!!!!Создаю textbox int Y = 50; lb4 =new Label(); ...

Обработка KeyPress для нескольких TextBox
на форме имеется множество текстбоксов, я написал проверку на ввод только вещественных чисел,...

Обработчик ввода в TextBox через событие KeyPress
Есть некий TextBox. В него должны вводиться числа (целые, либо с плавающей точкой) разделенные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru