C# Reading Textbox ignoring characters

2019-03-03 14:39发布

Hi everyone i have a key down event as follows

if (e.KeyCode == Keys.C && e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
{
    var amount = textBox1.Text;
    var total = label3.Text;
    decimal damount = Math.Round(Convert.ToDecimal(amount), 2);
    decimal dtotal = Convert.ToDecimal(total);
    var ntotal = dtotal - damount;
    var ndue = Math.Round(Convert.ToDecimal(ntotal), 2);
    var ntotal1 = Convert.ToString(ndue);
    if (ndue <= 0)
    {
        panel4.Show();
        label4.Text = ntotal1;
    }
    else
    {
        label3.Text = ntotal1;
    }
    textBox1.Text = "";
    textBox1.Focus();
}

this event works like i want it but here is my question how do i when reading the textbox1.text ignore character such as c or a , since the keydown requires c it messes with my decimal conversion any suggestions

2条回答
乱世女痞
2楼-- · 2019-03-03 15:24

Add e.SuppressKeyPress = true; e.Handled = true; to your handler when you want to prevent the key press from going forward.

As an aside, your if statement is equivalent to if (e.KeyCode == Keys.Return), since it will never be equal to both C and Enter.

查看更多
一夜七次
3楼-- · 2019-03-03 15:34

A while back I wrote a short post about restricting user input into TextBoxes, which is available here (Restricting allowed characters in TextBox) but one thing that I realised that it didn't handle was users pasting text that contains those characters into the TextBox for that the following may be of use to you (Stopping someone from pasting into a TextBox). Both of the posts were written in VB.NET but the code is simple enough that you shouldn't have any issues moving the code over to C#.

Hope this helps :)

查看更多
登录 后发表回答