从一个文本框向数组添加多个int

时间:2015-11-17 22:29:56

标签: c#

我有一小部分电影,显示有关每部电影的各种信息,包括开始时间和运行时间。我想通过用户输入将新电影添加到列表中(通过将详细信息填入文本框并按下按钮),我可以添加名称,流派和年龄等级,但我很难添加时间。

我的数组代码如下:

List<Movies> movies = new List<Movies>();
InitializeArrayList();
public void InitializeArrayList()
        {
            movies.Add(new Movies("The Avengers", "Action", "PG-13", 18, 05, 3, 15));
            movies.Add(new Movies("Inside Out", "Adventure", "PG", 16, 25, 1, 52));
            movies.Add(new Movies("Jurassic World", "Action/Adventure", "PG-13", 20, 10, 2, 04));
        }

因此,时间以两个整数的格式读取:一个用于小时,一个用于分钟。它以下列格式打印:

18:05

以下是我添加的代码段:

private void button6_Click(object sender, EventArgs e)
        {
            movies.Add(new Movies(textBox1.Text, textBox2.Text, textBox3.Text, Convert.ToInt32(textBox4.Text), Convert.ToInt32(textBox4.Text), Convert.ToInt32(textBox5.Text), Convert.ToInt32(textBox5.Text), 
            this.DisplayData();
        }

在此部分中,DisplayData()将所有信息打印到文本框中以查看数组。我知道这不正确,但我不确定如何解决它。有谁知道如何从文本框中读取两个整数并将其打印出来?

2 个答案:

答案 0 :(得分:1)

我不确定这是不是最好的方法,但这是我想到的第一个。
如果你知道你总是使用相同的字符分隔小时和分钟,那么在你的例子&#34;:&#34;中,我会读取输入字符串,将其拆分为数组,然后解析两个字符串在阵列中。

private void button6_Click(object sender, EventArgs e)
{
    string[] runtime = textBox4.Text.Split(':');
    int hours, minutes = 0;
    if (!int.TryParse(runtime[0], out hours) || !int.TryParse(runtime[1], out minutes))
    {
        //handle exception
    }
     movies.Add(new Movies(textBox1.Text, textBox2.Text, textBox3.Text, hours, minutes, Convert.ToInt32(textBox5.Text), Convert.ToInt32(textBox5.Text), 
    this.DisplayData();
}

您应该将其他Convert.ToInt32替换为int.Parseint.TryParse

答案 1 :(得分:0)

您可以明确地拆分和解析字符串,这将“正常”。如果你正在处理时间格式不同的不同文化,你可能会发现代码变得难以维护。

恕我直言,更好的选择是认识到TextBox中真正的时间值是什么,让.NET为你解析。您可以根据需要提取重要部分:

private void button6_Click(object sender, EventArgs e)
{
    DateTime showTime = DateTime.Parse(textBox4.Text);
    TimeSpan duration = TimeSpan.Parse(textBox5.Text);

    movies.Add(new Movies(textBox1.Text, textBox2.Text, textBox3.Text,
        showTime.Hour, showTime.Minute, duration.Hours, duration.Minutes, 
    this.DisplayData();
}

恕我直言,这也使代码更具可读性。