个性化阅读
专注于IT技术分析

如何在Winforms C#中仅允许数字出现在文本框中

本文概述

要在Windows窗体上创建仅接受数字的输入元素, 你有2个选项:

A.使用NumericUpDown控件

如果要创建仅接受数字的输入, 则需要考虑的第一件事是NumericUpDown控件。此控件表示Windows旋转框(也称为上下控件), 仅显示数字值。

你只需在”所有Windows窗体”组件中的”工具箱”中拖放此控件, 即可:

NumericUpDown控制Winforms

或者, 你可以使用代码动态添加它:

// Create a new numericupdown control
NumericUpDown numbox = new NumericUpDown();
// Some location on the form
numbox.Location = new Point(10, 50);
numbox.Visible = true;
// Append to the form
Controls.Add(numbox);

要检索其值, 你可以简单地访问控件的Value属性, 例如:

// Retrieve numeric up down value
decimal value = numericUpDown1.Value;

// Show in an alert
MessageBox.Show(value.ToString()); 

请注意, 该值以十进制类型返回, 因此你可以将其格式化为整数, 字符串或任何你需要的格式。此字段本身不允许包含非数字字符。

B.带有真实的文本框

如果由于某种原因而无法使用NumericUpDown控件, 例如使用仅提供文本框的UI框架, 则仍可以通过正确处理其KeyPress事件来过滤输入。首先, 你需要通过在Visual Studio中选择文本框并在”属性”工具箱(VS的右下角)中自动添加事件, 从而在输入的KeyPress事件中添加函数, 然后选择”事件”选项卡并双击KeyPress选项:

双击KeyPress事件文本框

这将自动在你的类上添加KeyPress函数, 该函数将为空, 然后你需要使用以下代码对其进行修改, 以防止输入非数字字符:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    // Verify that the pressed key isn't CTRL or any non-numeric digit
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.'))
    {
        e.Handled = true;
    }

    // If you want, you can allow decimal (float) numbers
    if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1))
    {
        e.Handled = true;
    }
}

要检索其值, 只需使用所需的类型将字符串转换为数字:

string textboxValue = textBox1.Text;

// Retrieve as decimal
decimal valueDec = decimal.Parse(textboxValue);

// Retrieve as integer
int valueInt = Int32.Parse(textboxValue);

编码愉快!

赞(0)
未经允许不得转载:srcmini » 如何在Winforms C#中仅允许数字出现在文本框中

评论 抢沙发

评论前必须登录!