如何确保放入文本框的值是整数类型

本文关键字:类型 整数 文本 何确保 确保 | 更新日期: 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;}
}