我有一小部分电影,显示有关每部电影的各种信息,包括开始时间和运行时间。我想通过用户输入将新电影添加到列表中(通过将详细信息填入文本框并按下按钮),我可以添加名称,流派和年龄等级,但我很难添加时间。
我的数组代码如下:
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()将所有信息打印到文本框中以查看数组。我知道这不正确,但我不确定如何解决它。有谁知道如何从文本框中读取两个整数并将其打印出来?
答案 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.Parse
或int.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();
}
恕我直言,这也使代码更具可读性。