6

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

4

6 回答 6

9

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

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

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

于 2011-05-13T17:56:51.060 回答
5

DecimalPlaces属性设置为零。

于 2017-08-11T11:11:02.133 回答
0

如果您使用的是 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>
于 2013-01-25T16:07:35.767 回答
0

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

于 2015-12-08T13:54:47.110 回答
0

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

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;
    }
}

其他一切正常(退格键等)

于 2021-03-04T15:38:51.140 回答
0

设置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

于 2021-12-18T17:30:46.137 回答