我如何限制 numericupdown 控件只接受整数

Posted

技术标签:

【中文标题】我如何限制 numericupdown 控件只接受整数【英文标题】:how do i restrict numericupdown control to accept only integers 【发布时间】:2011-08-24 16:45:09 【问题描述】:

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

【问题讨论】:

【参考方案1】:

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

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

这样你也不能输入千位分隔符,但你可以通过首先找出千位分隔符并允许它来添加它。

【讨论】:

您可能希望允许退格 - 检查上面的 (e.KeyChar != 8)。 @amolbk - yes 和其他键(箭头、home、end、Ctrl-C、V 和 X)也可能有用。 复制粘贴可能仍有问题 很容易接受Copy。在粘贴之前,可能需要检查剪贴板是否包含可以/应该显示的有效数据【参考方案2】:

DecimalPlaces 属性设置为零。

【讨论】:

【参考方案3】:

如果您使用的是 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>

【讨论】:

糟糕,我刚刚注意到您使用的是 Windows 窗体而不是 Web 窗体【参考方案4】:

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

【讨论】:

【参考方案5】:

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

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;
    

一切正常(退格等)

【讨论】:

【参考方案6】:

设置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://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.numericupdown.decimalplaces

【讨论】:

以上是关于我如何限制 numericupdown 控件只接受整数的主要内容,如果未能解决你的问题,请参考以下文章

NumericUpDown:接受逗号和点作为小数分隔符

NumericUpDown 控件不在我的 Visual Studio 2015(社区)可用控件列表中

将控件值(多行文本框、NumericUpDowns、复选框)保存到文件/从文件中加载

VB 中 NumericUpDown 控件 如何为手动输入设定触发事件

NUmericupdown控件

通常如何从控件中取消连接事件?