How to write common function for keypress function check for floating number of a textbox in C#?

痞子三分冷 提交于 2019-12-11 09:53:19

问题


I want to call a common function for more than 2 textboxes so that keypress can check that only floating point number can take a input.

This is my sample code: this work only for a single textbox (tbL1Distance). But I want it as a common textbox control.

private void tbL1Distance_KeyPress(object sender, KeyPressEventArgs e)
{
        char ch = e.KeyChar;

        if (ch == 46 && tbL1Distance.Text.IndexOf('.') != -1)
        {
            e.Handled = true;
            return;
        }

        if (!Char.IsDigit(ch) && ch != 8 && ch != 46)
        {
            e.Handled = true;
        }
}

Thanks in advance.


回答1:


You can simply create your own control, inheriting the TextBox, where you override the OnKeyPress method.

public class CustomTextBox : System.Windows.Forms.TextBox
{
    protected override void OnKeyPress(System.Windows.Forms.KeyPressEventArgs e)
    {
        char ch = e.KeyChar;

        if (ch == 46 && this.Text.IndexOf('.') != -1) //Replaced 'tbL1Distance' with 'this' to refer to the current TextBox.
        {
            e.Handled = true;
        }
        else if (!Char.IsDigit(ch) && ch != 8 && ch != 46)
        {
            e.Handled = true;
        }
        base.OnKeyPress(e);
    }
}

When done, go to the Build menu and press Build <your project name here>, and your control can now be found on the top of your Tool Box. Now just replace every normal TextBox with your own.

If you don't want the KeyPress event to be fired at all if your validation fails, you can just add return; in both if-statements.



来源:https://stackoverflow.com/questions/36383670/how-to-write-common-function-for-keypress-function-check-for-floating-number-of

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!