C# 将listview子项转换为double

C# 将listview子项转换为double,c#,winforms,user-interface,listview,formatexception,C#,Winforms,User Interface,Listview,Formatexception,我正在C#上创建一个进程调度计算器,我为输入创建了listviews 1,为调度本身创建了一个,但是当我开始编码FCFS调度部分时,我无法将突发时间子项转换为双倍,因此我可以添加等待时间。这里是代码的一些部分和表单的屏幕截图 public void button1_Click(object sender, EventArgs e) { if (textBox1.Text == "" || textBox2.Text == "" || textBox3.Text == "")

我正在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);
        }
    }
}
public void按钮1\u单击(对象发送者,事件参数e)
{
如果(textBox1.Text==“”| | textBox2.Text==“”| | textBox3.Text==“”)
{
MessageBox.Show(“在框中插入所需内容”);
}
其他的
{
ListViewItem进程=新建ListViewItem(textBox1.Text);
Process.SubItems.Add(textBox2.Text);
Process.SubItems.Add(textBox3.Text);
Process.SubItems.Add(textBox4.Text);
listView1.Items.Add(流程);
textBox1.Text=“”;
textBox2.Text=“”;
textBox3.Text=“”;
textBox4.Text=“”;
}
}
私有无效按钮2\u单击(对象发送者,事件参数e)
{
双温=0;
//先到先得
如果(comboBox1.Text==“FCFS”)
{
对于(int i=0;i


我尝试了几次并搜索了几个表单,得到的只是FormatExpection。

子项[0]将包含第一个子元素,它与项的文本相同,而且您无法将ListViewItem转换为文本。子项转换为文本,您需要使用Text属性

因此,您需要使用:

listView2.Items[i].SubItems[1].Text 

在转换中,我还建议使用Double.TryParse而不是convert.ToDouble,速度更快,并且会告诉您是否已解析。

您可能需要在
子项[0]
上调用
.ToString()
,以便确保将字符串传递到
convert.ToDouble()
。如果保存这两个
子项[0].Text
字符串变量中的值首先,它们的值是多少?我尝试了这个方法,但没有用,仍然得到异常@dub@GusmanSystem.FormatException注意:您可以使用一个station
listView1.Items.Add(新ListViewItem(新字符串[]{textBox1.Text,textBox2.Text,textBox3.Text,textBox4.Text})分配一行下一个应该是
listView2.Items[i]。子项[2]。Text
而不是
listView2.Items[i+1]。子项[1]。Text
就像在OP中一样。解析确实有效,哇,我也无法很好地映射子项感谢您提供的信息,谢谢