如何确保放入文本框的值是整数类型
本文关键字:类型 整数 文本 何确保 确保 | 更新日期: 2023-09-27 18:32:35
在定义字段的属性时,有没有办法使用int.TryParse
?我想完成的是检查用户是否没有意外插入字符串而不是整数。我想不通。任何想法和提示都会非常有帮助。
版:我想做的是 - 用户在文本框中输入值,在预处理按钮后,getset 属性评估用户放入文本框的值是否为整数。任何其他数据类型都无效,因此,如果用户输入了字符串或字符,则会显示消息框,并显示消息"请插入数字" 希望我能更容易理解我真正想要完成的任务下面是示例代码:
private void button1_Click(object sender, EventArgs e)
{
List<myClass> myList = new List<myClass>();
myList.Add(new myClass { Skaitlis1 = textBox1.Text });
foreach (myClass pers in myList)
{
listBox1.Items.Add(pers.Skaitlis1);
}
}
class myClass
{
private int skaitlis1;
public int Skaitlis1
{
get { return skaitlis1; }
set
{
int a;
if (int.TryParse(value, out a))
{
skaitlis1 = a;
}
else
{
skaitlis1 = 0;
}
}
}
}
我不确定这是否真的是你所追求的,但听起来你想要一个字符串属性,只有在用户传递一个可以转换为 int 的字符串时才能设置?
如果是这样,那么如果您只是将支持字段的类型更改为 int,您所拥有的将(几乎)起作用:
private class myClass
{
private int skaitlis1;
public string Skaitlis1
{
get { return skaitlis1.ToString(); }
set { int.TryParse(value, out skaitlis1); }
}
}
.
var x = new myClass();
x.Skaitlis1 = "hello";
Console.WriteLine("The value of Skaitlis1 is: {0}", x.Skaitlis1);
x.Skaitlis1 = "12";
Console.WriteLine("Now the value of Skaitlis1 is: {0}", x.Skaitlis1);
// Output:
// The value of Skaitlis1 is: 0
// Now the value of Skaitlis1 is: 12
.
否则,如果您只想要一个int
属性,请将其设为int
而不是string
:
public int Skaitlis1 { get; set; }
最好在类中使用 int 属性,现在您将验证逻辑移动到 UI 端:
private void button1_Click(object sender, EventArgs e)
{
int value;
if (int.TryParse(textBox1.Text, out value))
{
// This is from your code above. The logic does not make sense in that
// it is doing a lot of extra work to just add 'value' to the listBox1.
// I assume in reality you're actually adding 'myClass' to a global list?
List<myClass> myList = new List<myClass>();
myList.Add(new myClass { Skaitlis1 = value });
foreach (myClass pers in myList)
{
listBox1.Items.Add(pers.Skaitlis1);
}
}
else
{
MessageBox.Show("You must enter a valid integer!");
}
}
<</div>
div class="answers"> 如果您真的在尝试存储字符串属性,但想确保该属性可以作为 int 传递,那么您走在正确的轨道上。 只是不要使用TryParse
评估结果(除非想将其转换回string
)。
class myClass
{
private string skaitlis1;
public string Skaitlis1
{
get { return skaitlis1; }
set
{
int a;
if (int.TryParse(value, out a))
{
skaitlis1 = value;
}
else
{
skaitlis1 = "0";
}
}
}
}
如果你想在创建之前将你的属性更改为 int 并确保值,那么你可以做这样的事情。
private void button1_Click(object sender, EventArgs e)
{
int val;
if (int.TryParse(textBox1.Text, out val))
{
List<myClass> myList = new List<myClass>();
myList.Add(new myClass { Skaitlis1 = val });
foreach (myClass pers in myList)
{
listBox1.Items.Add(pers.Skaitlis1);
}
}
else
{
MessageBox.Show("Invalid value. Must be numeric.");
}
}
class myClass
{
public int Skaitlis1 {get; set;}
}