将列表视图子项转换为双精度
Converting listview subitems to double
我正在 C# 上创建一个进程调度计算器,我为输入创建了 listviews 1,为调度本身创建了一个,但是当我开始编码 FCFS 调度部分时,我无法将突发时间子项转换为双倍,所以我可以在这里添加等待时间是代码的某些部分和表单的屏幕截图
public void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
{
MessageBox.Show("Insert the required in the boxes");
}
else
{
ListViewItem Process = new ListViewItem(textBox1.Text);
Process.SubItems.Add(textBox2.Text);
Process.SubItems.Add(textBox3.Text);
Process.SubItems.Add(textBox4.Text);
listView1.Items.Add(Process);
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
}
}
private void button2_Click(object sender, EventArgs e)
{
double temp = 0;
//First Come First Served
if (comboBox1.Text == "FCFS")
{
for (int i = 0; i < listView1.Items.Count; i++)
{
ListViewItem WaitingTime = new ListViewItem(listView1.Items[i].Text);
//temp = Convert.ToDouble(listView2.Items[i].SubItems[0]) + Convert.ToDouble(listView2.Items[i + 1].SubItems[0]);
if (listView2.Items.Contains(WaitingTime))
{
WaitingTime.SubItems.Add(temp.ToString());
listView2.Items.Add(WaitingTime);
}
else
{
WaitingTime.SubItems.Add(temp.ToString());
listView2.Items.Add(WaitingTime);
}
}
}
//SJF Non-preemptive
if (comboBox1.Text == "SJF non-preemptive")
{
for (int i = 0; i < listView1.Items.Count; i++)
{
listView2.Items.Add(listView1.Items[i].Text);
}
}
}
我尝试了几次并搜索了几个表格,但我得到的只是 FormatExpection。
Subitems[0] 将包含第一个子元素,它与项目的文本相同,并且您无法将 ListViewItem.Subitem 转换为文本,您需要使用文本 属性.
所以你需要使用:
listView2.Items[i].SubItems[1].Text
在你的转换中,我也建议使用 Double.TryParse 而不是 Convert.ToDouble,速度更快并且会告诉你它是否被解析。
我正在 C# 上创建一个进程调度计算器,我为输入创建了 listviews 1,为调度本身创建了一个,但是当我开始编码 FCFS 调度部分时,我无法将突发时间子项转换为双倍,所以我可以在这里添加等待时间是代码的某些部分和表单的屏幕截图
public void button1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")
{
MessageBox.Show("Insert the required in the boxes");
}
else
{
ListViewItem Process = new ListViewItem(textBox1.Text);
Process.SubItems.Add(textBox2.Text);
Process.SubItems.Add(textBox3.Text);
Process.SubItems.Add(textBox4.Text);
listView1.Items.Add(Process);
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
textBox4.Text = "";
}
}
private void button2_Click(object sender, EventArgs e)
{
double temp = 0;
//First Come First Served
if (comboBox1.Text == "FCFS")
{
for (int i = 0; i < listView1.Items.Count; i++)
{
ListViewItem WaitingTime = new ListViewItem(listView1.Items[i].Text);
//temp = Convert.ToDouble(listView2.Items[i].SubItems[0]) + Convert.ToDouble(listView2.Items[i + 1].SubItems[0]);
if (listView2.Items.Contains(WaitingTime))
{
WaitingTime.SubItems.Add(temp.ToString());
listView2.Items.Add(WaitingTime);
}
else
{
WaitingTime.SubItems.Add(temp.ToString());
listView2.Items.Add(WaitingTime);
}
}
}
//SJF Non-preemptive
if (comboBox1.Text == "SJF non-preemptive")
{
for (int i = 0; i < listView1.Items.Count; i++)
{
listView2.Items.Add(listView1.Items[i].Text);
}
}
}
我尝试了几次并搜索了几个表格,但我得到的只是 FormatExpection。
Subitems[0] 将包含第一个子元素,它与项目的文本相同,并且您无法将 ListViewItem.Subitem 转换为文本,您需要使用文本 属性.
所以你需要使用:
listView2.Items[i].SubItems[1].Text
在你的转换中,我也建议使用 Double.TryParse 而不是 Convert.ToDouble,速度更快并且会告诉你它是否被解析。