none
Проблема с работой e.Handled RRS feed

  • Вопрос

  • Добрый день!

            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;
                }
                e.Handled = true;
            }
    

    Но в поле textBox1 как можно было вводить все что угодно так и осталось(((

    Помогите пожалуйста!

    7 апреля 2013 г. 17:39

Ответы

Все ответы

  • Посмотрите реализацию здесь: Control.KeyPress - событие
    7 апреля 2013 г. 18:48
  • Вот прям по аналогии с предложенным вами примером сделал - результат тот же (((

    Привожу код всего проекта, может там проблема :

    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 WindowsFormsApplication2
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private bool nonNumberEntered = false;
            private void textBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
            {
                nonNumberEntered = false;
                if (e.KeyCode < Keys.D0 || e.KeyCode > Keys.D9)
                {
                    if (e.KeyCode < Keys.NumPad0 || e.KeyCode > Keys.NumPad9)
                    {
                        if (e.KeyCode != Keys.Back)
                        {
                            nonNumberEntered = true;
                        }
                    }
                }
            }
    
            private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
            {
                if (nonNumberEntered == true)
                {
                    e.Handled = true;
                }
            }
    
            private void button3_Click(object sender, EventArgs e)
            {
                if (MessageBox.Show("Вы уверены?", Application.ProductName, MessageBoxButtons.OKCancel) != DialogResult.Yes)
                {
                    Application.Exit();
                }
                    
            }
    
    
            private void button1_Click(object sender, EventArgs e)
            {
                double a;
                double b;
                double c;
                double des;
    
                try
                {
                    a = Convert.ToDouble(textBox1.Text);
                    b = Convert.ToDouble(textBox2.Text);
                    c = Convert.ToDouble(textBox3.Text);
                    des = (Math.Pow(b, 2)) - 4 * a * c;
                    label5.Text = "Дискриминант = " + Convert.ToString(des);
                }
    
                catch
                {
                    MessageBox.Show("Введите данные");
                }
    
            }
    
        }
    }

    Уже всю голову сломал (


    8 апреля 2013 г. 14:41
  • Может быть у Вас не к тому контролу привязаны события? Как бы то ни было, тот же код у меня работает идеально - вводятся только цифры.

    Залил решение сюда

    8 апреля 2013 г. 16:36
  • И у меня тоже все работает.
    8 апреля 2013 г. 17:33
  • Нужно ждать ответа эксперта...

    Перепроверил уже кажется все(

    Вот залил сюда



    8 апреля 2013 г. 19:18
  • Плохо проверяли...

    клац

    8 апреля 2013 г. 19:33
  • Напиши пожалуйста в чем была ошибка...

    Я новичок в этой среде разработки и мне сложно найти её. 

    8 апреля 2013 г. 19:41
  • Методы, которые обрабатывали события не вызывались так как просто не было подписки на эти события:

    • Помечено в качестве ответа Alexander2106 8 апреля 2013 г. 19:55
    8 апреля 2013 г. 19:51
  • Огромное спасибо!
    8 апреля 2013 г. 19:55
  • Пожалуйста ))
    8 апреля 2013 г. 20:02