只允许在 winform 组合框中使用整数
本文关键字:整数 组合 winform | 更新日期: 2023-09-27 18:31:35
我目前正在用c#编写照片编辑器,目前正在设计允许钢笔工具更改大小的功能。除了一个问题外,它完美无缺。以下是一些背景信息:因此,在我拥有的组合框中,有10个项目,每个项目都是数字1 - 10。如果我选择一个,或直接在组合框中键入一些数字,它会将笔大小设置为该大小。问题是,如果我输入一个字母,它会给我一个
IndexOutOfRangeException
.
有没有办法使组合框只接受整数和浮点数?基本上我的意思是,如果我按 3,笔的大小将变为 3。但是如果我按 H,它什么也没做。
此外,您可以使用按键处理程序来确保只键入数字。
private void txtPenToolSize_KeyPress(object sender, KeyPressEventArgs e)
{
if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar))
{
e.Handled = true;
}
}
您可以执行两个选项之一。第一个选项是通过禁用键入来限制用户在组合中键入内容。这可以通过在page_load中提供此代码来实现
comboBox1.DropDownStyle to ComboBoxStyle.DropDownList
或访问如下所示的值:
if (int.TryParse(comboBox1.Text, out BreshSize))
{
// Proceed
}
else
{
//Show errror message
}
此实现应允许您查看新值是否为整数并采取相应操作。 当您开始检查值时,您会将其放在代码中。"2"将替换为您正在检查的字符串。
int currInt = 0;
int tryInt = 0;
if(int.TryParse("2", out tryInt))
{
currInt = tryInt;
}
else
{
//reset or display a warning
}
一个通用实现,适用于具有不同系统小数分隔符(区域设置)的国际用户,并且 texbox/combbobox 不仅允许Int
数字格式(双精度、浮点数、十进制等)。
private void comboTick_KeyPress(object sender, KeyPressEventArgs e)
{
//this allows only numbers and decimal separators
if (!char.IsControl(e.KeyChar)
&& !char.IsDigit(e.KeyChar)
&& (e.KeyChar != '.')
&& (e.KeyChar != ',') )
{
e.Handled = true; //ignore the KeyPress
}
//this converts either 'dot' or 'comma' into the system decimal separator
if (e.KeyChar.Equals('.') || e.KeyChar.Equals(','))
{
e.KeyChar = ((System.Globalization.CultureInfo)System.Globalization.CultureInfo.CurrentCulture)
.NumberFormat.NumberDecimalSeparator
.ToCharArray()[0];
e.Handled = false; //accept the KeyPress
}
}