在C#中,仅允许在文本框中输入十进制数。

24 浏览
0 Comments

在C#中,仅允许在文本框中输入十进制数。

我是C#的新手,我想知道如何制作一个只接受数字的文本框。

所以如果你输入一个小数,那就没有问题,但是当你输入其他字符,除了"0,1,2,3,4,5,6,7,8,9或,"之外,我希望它在文本框中被删除。

我认为可以使用KeyDown或TextChanged来实现。

以下是我已经尝试过的方法:

private void txt2011_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
    {
        if (!System.Text.RegularExpressions.Regex.IsMatch("^[0-9]", txt2011.Text))
        {
            txt2011.Text = "0";
        }
    }

提前感谢。

0
0 Comments

问题的原因是当用户在文本框中输入时,KeyDownText Changed事件会立即触发。在这种情况下,您甚至看不到您输入的文本,因为文本框内的文本一旦更改,适当的操作就会发生。

解决方法是使用LostFocus事件,因为它仅在用户离开文本框时触发,然后您可以将其高亮显示并将文本替换为0。

以下是实现上述解决方法的C#代码示例:

private void textBox1_LostFocus(object sender, EventArgs e)
{
    TextBox textBox = (TextBox)sender;
    decimal value;
    if (!decimal.TryParse(textBox.Text, out value))
    {
        textBox.Text = "0";
        textBox.SelectAll();
    }
}

在上述示例中,textBox1_LostFocusLostFocus事件的事件处理程序。它首先将发送事件的文本框转换为TextBox对象。然后,它尝试将文本转换为十进制数,如果转换失败,则将文本设置为"0",并选中所有文本。

通过使用LostFocus事件而不是KeyDownText Changed事件,可以确保只有在用户离开文本框时才会进行验证和更改文本的操作。这样,用户可以先输入完整的十进制数,然后在离开文本框后进行验证和更改。

0
0 Comments

在C#中,有时候我们希望在文本框中只允许输入十进制数。下面给出了一种解决方法。

首先,我们需要订阅文本框的TextChanged事件。可以通过在设计器中双击文本框来实现。当事件发生时,我们需要检查文本框的文本内容。如果为空字符串,直接返回。然后我们尝试将文本转换为double类型。如果无法转换成功,将文本设置为原始文本内容。

在类中定义一个originalText变量,用来存储原始文本。如果转换成功,将原始文本设置为当前文本。

以下是示例代码:

private string originalText;
private void textbox1_TextChanged(object sender, EventArgs e)
{
    if (string.IsNullOrEmpty(textbox1.Text))
    {
        return;
    }
    try
    {
        Convert.ToDouble(textbox1.Text);
    }
    catch (FormatException)
    {
        textbox1.Text = originalText;
        return;
    }
    originalText = textbox1.Text;
}

现在,文本框只能输入十进制数了。

0