如何限制 numericupdown 控件仅接受整数

发布于 2024-11-06 23:11:13 字数 92 浏览 7 评论 0 原文

我有一个 Windows numericupdown 控件。我想限制它,以便用户只能在其中输入整数。我该怎么做?目前用户也可以输入十进制数。 谢谢 PS我正在使用.net

I have a windows numericupdown control. I want to restrict it so that user can only enter integers in it. How do I do that? At present a user can enter a decimal number as well.
Thanks
PS I am using .net

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

梦行七里 2024-11-13 23:11:13

我做了一些实验,发现了这个解决方法:

    private void numericUpDown1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar < 48 || e.KeyChar > 57)
        {
            e.Handled = true;
        }
    }

这样您也将无法输入千位分隔符,但您可以通过首先找出千位分隔符是什么并允许它来添加它。

I did a little experimenting and found this workaround:

    private void numericUpDown1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar < 48 || e.KeyChar > 57)
        {
            e.Handled = true;
        }
    }

This way you will not be able to type thousand separators either but you could add that by first finding out what the thousand separator is and allowing that too.

欢烬 2024-11-13 23:11:13

设置 DecimalPlaces 属性为零。

Set the DecimalPlaces property to zero.

天生の放荡 2024-11-13 23:11:13

设置 DecimalPlaces = 0

public class IntegerUpDown : NumericUpDown
   {
      public IntegerUpDown(): base() 
      {
         DecimalPlaces = 0;
      }

      protected override void OnTextBoxTextChanged(object source, EventArgs e) 
      {
         base.OnTextBoxTextChanged( source, e);
         ValidateEditText();
      }
   }

请参阅文档:https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.numericupdown.decimalplaces

Set DecimalPlaces = 0:

public class IntegerUpDown : NumericUpDown
   {
      public IntegerUpDown(): base() 
      {
         DecimalPlaces = 0;
      }

      protected override void OnTextBoxTextChanged(object source, EventArgs e) 
      {
         base.OnTextBoxTextChanged( source, e);
         ValidateEditText();
      }
   }

See docs: https://learn.microsoft.com/en-us/dotnet/api/system.windows.forms.numericupdown.decimalplaces

眼睛会笑 2024-11-13 23:11:13

如果您使用 AjaxControlToolkit,则只需将 FilteredTextBoxExtender 与 NumericUpDownExtender 结合起来即可:

<asp:FilteredTextBoxExtender ID="FilteredTextBoxExtender" runat="server" TargetControlID="TextBoxNums" FilterType="Numbers">
</asp:FilteredTextBoxExtender>
<asp:NumericUpDownExtender ID="NumericUpDownExtender" runat="server" TargetControlID="TextBoxNums" Width="10">
</asp:NumericUpDownExtender>
<asp:TextBox ID="TextBoxNums" runat="server"></asp:TextBox>

If you are using the AjaxControlToolkit, you can just combine the FilteredTextBoxExtender with the NumericUpDownExtender:

<asp:FilteredTextBoxExtender ID="FilteredTextBoxExtender" runat="server" TargetControlID="TextBoxNums" FilterType="Numbers">
</asp:FilteredTextBoxExtender>
<asp:NumericUpDownExtender ID="NumericUpDownExtender" runat="server" TargetControlID="TextBoxNums" Width="10">
</asp:NumericUpDownExtender>
<asp:TextBox ID="TextBoxNums" runat="server"></asp:TextBox>
沫尐诺 2024-11-13 23:11:13

如果您有权访问 DevExpress 控件,则应使用 SpinEdit控件并将其 Properties.IsFloatValue 设置为 false

If you have access to DevExpress controls, you should use a SpinEdit control and set its Properties.IsFloatValue to false.

无声情话 2024-11-13 23:11:13

我使用它不允许在当前系统上输入数字小数分隔符:

private void NumericUpDown_KeyPress(object sender, KeyPressEventArgs e)
{
    // Do not accept the default decimal separator
    char sep = Convert.ToChar(Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator);
    if (e.KeyChar == sep)
    {
        e.Handled = true;
    }
}

其他一切都有效(退格键等)

I'm using this to not allow the typing of the number decimal separator on the current system:

private void NumericUpDown_KeyPress(object sender, KeyPressEventArgs e)
{
    // Do not accept the default decimal separator
    char sep = Convert.ToChar(Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator);
    if (e.KeyChar == sep)
    {
        e.Handled = true;
    }
}

Everything else works (Backspace, etc.)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文