【问题标题】:listView selected items to textboxlistView 选择的项目到文本框
【发布时间】:2017-10-12 00:00:00
【问题描述】:

所以我的列表视图充满了项目。当我选择该项目时,它适用于第一行,但下一行将显示下一行。

所以它就像第 1-4 列 c1,c2,c3,c4

textbox1 显示在第 1 行的第一行值 = c1 textbox1 显示在第 2 行的第二行值 = c2

当我需要它留在 c1 中时

编辑: 所以我希望能够通过读取每行See Photo 中的属性来访问作业文件。但问题是作业文件有一个属性文件夹,所以我将从每一行获取的值导航到我需要的正确文件夹,如果这有意义的话。但是在照片中它应该是如何工作的,但是如果我选择该行下面的行,它会给我一个错误,因为 int 不存在。因为下一行之后的每一行都会将其旁边的列中的值放在错误的文本框中。

错误:System.ArgumentOutOfRangeException: 'InvalidArgument=Value of '1' 对 'index' 无效。'

private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
    {

        int Itemindex = e.ItemIndex;
        ListViewItem item = listView1.SelectedItems[Itemindex];
        //fill the text boxes
        textBox2.Text = item.Text;
       textBox3.Text = item.SubItems[1].Text;
        textBox4.Text = item.SubItems[2].Text;
       textBox5.Text = item.SubItems[3].Text;

    }

private void Chad2017()
    {
        try
        {
            if (textBox1.Text != "arc1")
            {
                textBox1.Text = "arc1";
                listView1.Visible = true;


                listView1.Sort();
                string[] dirs = Directory.GetDirectories(JobArc1 + @"\2017\1-January");
                string[] dirs1 = Directory.GetDirectories(JobArc1 + @"\2017\2-February");
                string[] dirs2 = Directory.GetDirectories(JobArc1 + @"\2017\3-March");
                string[] dirs3 = Directory.GetDirectories(JobArc1 + @"\2017\4-April");
                string[] dirs4 = Directory.GetDirectories(JobArc1 + @"\2017\5-May");
                string[] dirs5 = Directory.GetDirectories(JobArc1 + @"\2017\6-June");
                string[] dirs6 = Directory.GetDirectories(JobArc1 + @"\2017\7-July");
                string[] dirs7 = Directory.GetDirectories(JobArc1 + @"\2017\8-August");
                string[] dirs8 = Directory.GetDirectories(JobArc1 + @"\2017\9-September");
                string[] dirs9 = Directory.GetDirectories(JobArc1 + @"\2017\10-October");
                string[] dirs10 = Directory.GetDirectories(JobArc1 + @"\2017\11-November");
                string[] dirs11 = Directory.GetDirectories(JobArc1 + @"\2017\12-December");
                string[] files = Directory.GetFiles(JobLoc1);
                foreach (string dir in dirs)
                {
                    try
                    {
                        string JobNumber = File.ReadAllText(@dir + "\\Properties\\thisJobNumber.txt");
                        string JobName = File.ReadAllText(@dir + "\\Properties\\JobName.txt");
                        string BidDate = File.ReadAllText(@dir + "\\Properties\\BidDate.txt");
                        string Location = File.ReadAllText(@dir + "\\Properties\\Location.txt");
                        string Contact = File.ReadAllText(@dir + "\\Properties\\Contact.txt");
                        string[] JobInfo = { JobName, BidDate, Location, Contact };

                        ListViewItem item1 = new ListViewItem();

                        if (Contact != "")
                        {
                            listView1.Items.Add(JobNumber).SubItems.AddRange(JobInfo);
                            //  listView1.Items[].SubItems.Add(File.ReadAllText(@dir + "\\Properties\\JobName.txt"));
                        }
                    }
                    catch { }
                }
                foreach (string dir1 in dirs1)
                {
                    try
                    {
                        string JobNumber = File.ReadAllText(@dir1 + "\\Properties\\thisJobNumber.txt");
                        string JobName = File.ReadAllText(@dir1 + "\\Properties\\JobName.txt");
                        string BidDate = File.ReadAllText(@dir1 + "\\Properties\\BidDate.txt");
                        string Location = File.ReadAllText(@dir1 + "\\Properties\\Location.txt");
                        string Contact = File.ReadAllText(@dir1 + "\\Properties\\Contact.txt");
                        string[] JobInfo = { JobName, BidDate, Location, Contact };

                        ListViewItem item1 = new ListViewItem();

                        if (Contact != "")
                        {
                            listView1.Items.Add(JobNumber).SubItems.AddRange(JobInfo);
                            //  listView1.Items[].SubItems.Add(File.ReadAllText(@dir + "\\Properties\\JobName.txt"));
                        }
                    }
                    catch { }
                }

                for each (string dir2 in dirs2)
                {
                    try
                    {
                        string JobNumber = File.ReadAllText(@dir2 + "\\Properties\\thisJobNumber.txt");
                        string JobName = File.ReadAllText(@dir2 + "\\Properties\\JobName.txt");
                        string BidDate = File.ReadAllText(@dir2 + "\\Properties\\BidDate.txt");
                        string Location = File.ReadAllText(@dir2 + "\\Properties\\Location.txt");
                        string Contact = File.ReadAllText(@dir2 + "\\Properties\\Contact.txt");
                        string[] JobInfo = { JobName, BidDate, Location, Contact };

                        ListViewItem item1 = new ListViewItem();

                        if (Contact != "")
                        {
                            listView1.Items.Add(JobNumber).SubItems.AddRange(JobInfo);
                            //  listView1.Items[].SubItems.Add(File.ReadAllText(@dir + "\\Properties\\JobName.txt"));
                        }
                    }
                    catch { }
                }
                foreach (string dir3 in dirs3)
                {
                    try
                    {
                        string JobNumber = File.ReadAllText(@dir3 + "\\Properties\\thisJobNumber.txt");
                        string JobName = File.ReadAllText(@dir3 + "\\Properties\\JobName.txt");
                        string BidDate = File.ReadAllText(@dir3 + "\\Properties\\BidDate.txt");
                        string Location = File.ReadAllText(@dir3 + "\\Properties\\Location.txt");
                        string Contact = File.ReadAllText(@dir3 + "\\Properties\\Contact.txt");
                        string[] JobInfo = { JobName, BidDate, Location, Contact };

                        ListViewItem item1 = new ListViewItem();

                        if (Contact != "")
                        {
                            listView1.Items.Add(JobNumber).SubItems.AddRange(JobInfo);
                            //  listView1.Items[].SubItems.Add(File.ReadAllText(@dir + "\\Properties\\JobName.txt"));
                        }
                    }
                    catch { }
                }
                foreach (string dir4 in dirs4)
                {
                    try
                    {
                        string JobNumber = File.ReadAllText(@dir4 + "\\Properties\\thisJobNumber.txt");
                        string JobName = File.ReadAllText(@dir4 + "\\Properties\\JobName.txt");
                        string BidDate = File.ReadAllText(@dir4 + "\\Properties\\BidDate.txt");
                        string Location = File.ReadAllText(@dir4 + "\\Properties\\Location.txt");
                        string Contact = File.ReadAllText(@dir4 + "\\Properties\\Contact.txt");
                        string[] JobInfo = { JobName, BidDate, Location, Contact };

                        ListViewItem item1 = new ListViewItem();

                        if (Contact != "")
                        {
                            listView1.Items.Add(JobNumber).SubItems.AddRange(JobInfo);
                            //  listView1.Items[].SubItems.Add(File.ReadAllText(@dir + "\\Properties\\JobName.txt"));
                        }
                    }
                    catch { }
                }
                foreach (string dir5 in dirs5)
                {
                    try
                    {
                        string JobNumber = File.ReadAllText(@dir5 + "\\Properties\\thisJobNumber.txt");
                        string JobName = File.ReadAllText(@dir5 + "\\Properties\\JobName.txt");
                        string BidDate = File.ReadAllText(@dir5 + "\\Properties\\BidDate.txt");
                        string Location = File.ReadAllText(@dir5 + "\\Properties\\Location.txt");
                        string Contact = File.ReadAllText(@dir5 + "\\Properties\\Contact.txt");
                        string[] JobInfo = { JobName, BidDate, Location, Contact };

                        ListViewItem item1 = new ListViewItem();

                        if (Contact != "")
                        {
                            listView1.Items.Add(JobNumber).SubItems.AddRange(JobInfo);
                            //  listView1.Items[].SubItems.Add(File.ReadAllText(@dir + "\\Properties\\JobName.txt"));
                        }
                    }
                    catch { }
                }
                foreach (string dir6 in dirs6)
                {
                    try
                    {
                        string JobNumber = File.ReadAllText(@dir6 + "\\Properties\\thisJobNumber.txt");
                        string JobName = File.ReadAllText(@dir6 + "\\Properties\\JobName.txt");
                        string BidDate = File.ReadAllText(@dir6 + "\\Properties\\BidDate.txt");
                        string Location = File.ReadAllText(@dir6 + "\\Properties\\Location.txt");
                        string Contact = File.ReadAllText(@dir6 + "\\Properties\\Contact.txt");
                        string[] JobInfo = { JobName, BidDate, Location, Contact };

                        ListViewItem item1 = new ListViewItem();

                        if (Contact != "")
                        {
                            listView1.Items.Add(JobNumber).SubItems.AddRange(JobInfo);
                            //  listView1.Items[].SubItems.Add(File.ReadAllText(@dir + "\\Properties\\JobName.txt"));
                        }
                    }
                    catch { }
                }
                foreach (string dir7 in dirs7)
                {
                    try
                    {
                        string JobNumber = File.ReadAllText(@dir7 + "\\Properties\\thisJobNumber.txt");
                        string JobName = File.ReadAllText(@dir7 + "\\Properties\\JobName.txt");
                        string BidDate = File.ReadAllText(@dir7 + "\\Properties\\BidDate.txt");
                        string Location = File.ReadAllText(@dir7 + "\\Properties\\Location.txt");
                        string Contact = File.ReadAllText(@dir7 + "\\Properties\\Contact.txt");
                        string[] JobInfo = { JobName, BidDate, Location, Contact };

                        ListViewItem item1 = new ListViewItem();

                        if (Contact != "")
                        {
                            listView1.Items.Add(JobNumber).SubItems.AddRange(JobInfo);
                            //  listView1.Items[].SubItems.Add(File.ReadAllText(@dir + "\\Properties\\JobName.txt"));
                        }
                    }
                    catch { }


                }
                foreach (string dir8 in dirs8)
                {
                    try
                    {
                        string JobNumber = File.ReadAllText(@dir8 + "\\Properties\\thisJobNumber.txt");
                        string JobName = File.ReadAllText(@dir8 + "\\Properties\\JobName.txt");
                        string BidDate = File.ReadAllText(@dir8 + "\\Properties\\BidDate.txt");
                        string Location = File.ReadAllText(@dir8 + "\\Properties\\Location.txt");
                        string Contact = File.ReadAllText(@dir8 + "\\Properties\\Contact.txt");
                        string[] JobInfo = { JobName, BidDate, Location, Contact };

                        ListViewItem item1 = new ListViewItem();

                        if (Contact != "")
                        {
                            listView1.Items.Add(JobNumber).SubItems.AddRange(JobInfo);
                            //  listView1.Items[].SubItems.Add(File.ReadAllText(@dir + "\\Properties\\JobName.txt"));
                        }
                    }
                    catch { }
                }
                foreach (string dir9 in dirs9)
                {
                    try
                    {
                        string JobNumber = File.ReadAllText(@dir9 + "\\Properties\\thisJobNumber.txt");
                        string JobName = File.ReadAllText(@dir9 + "\\Properties\\JobName.txt");
                        string BidDate = File.ReadAllText(@dir9 + "\\Properties\\BidDate.txt");
                        string Location = File.ReadAllText(@dir9 + "\\Properties\\Location.txt");
                        string Contact = File.ReadAllText(@dir9 + "\\Properties\\Contact.txt");
                        string[] JobInfo = { JobName, BidDate, Location, Contact };

                        ListViewItem item1 = new ListViewItem();

                        if (Contact != "")
                        {
                            listView1.Items.Add(JobNumber).SubItems.AddRange(JobInfo);
                            //  listView1.Items[].SubItems.Add(File.ReadAllText(@dir + "\\Properties\\JobName.txt"));
                        }
                    }
                    catch { }
                }
                foreach (string dir10 in dirs10)
                {
                    try
                    {
                        string JobNumber = File.ReadAllText(@dir10 + "\\Properties\\thisJobNumber.txt");
                        string JobName = File.ReadAllText(@dir10 + "\\Properties\\JobName.txt");
                        string BidDate = File.ReadAllText(@dir10 + "\\Properties\\BidDate.txt");
                        string Location = File.ReadAllText(@dir10 + "\\Properties\\Location.txt");
                        string Contact = File.ReadAllText(@dir10 + "\\Properties\\Contact.txt");
                        string[] JobInfo = { JobName, BidDate, Location, Contact };

                        ListViewItem item1 = new ListViewItem();

                        if (Contact != "")
                        {
                            listView1.Items.Add(JobNumber).SubItems.AddRange(JobInfo);
                            //  listView1.Items[].SubItems.Add(File.ReadAllText(@dir + "\\Properties\\JobName.txt"));
                        }
                    }
                    catch { }
                }
                foreach (string dir11 in dirs11)
                {
                    try
                    {
                        string JobNumber = File.ReadAllText(@dir11 + "\\Properties\\thisJobNumber.txt");
                        string JobName = File.ReadAllText(@dir11 + "\\Properties\\JobName.txt");
                        string BidDate = File.ReadAllText(@dir11 + "\\Properties\\BidDate.txt");
                        string Location = File.ReadAllText(@dir11 + "\\Properties\\Location.txt");
                        string Contact = File.ReadAllText(@dir11 + "\\Properties\\Contact.txt");
                        string[] JobInfo = { JobName, BidDate, Location, Contact };

                        ListViewItem item1 = new ListViewItem();

                        if (Contact != "")
                        {
                            listView1.Items.Add(JobNumber).SubItems.AddRange(JobInfo);
                            //  listView1.Items[].SubItems.Add(File.ReadAllText(@dir + "\\Properties\\JobName.txt"));
                        }
                    }
                    catch { }
                }
            }
            else
            {
                textBox1.Text = "arc0";
                listView1.Visible = false;
            }

        }
        catch { }
    }
private void button1_Click(object sender, EventArgs e)
    {

        try
        {

            if (textBox1.Text != "1")
            {
                textBox1.Text = "1";
                listView1.Visible = true;
                listView1.Items.Clear();

                listView1.Sort();
                string[] dirs = Directory.GetDirectories(JobLoc1);
                string[] files = Directory.GetFiles(JobLoc1);
                foreach (string dir in dirs)
                {
                    try
                    {
                        string JobNumber = File.ReadAllText(@dir + "\\Properties\\thisJobNumber.txt");
                        string JobName = File.ReadAllText(@dir + "\\Properties\\JobName.txt");
                        string BidDate = File.ReadAllText(@dir + "\\Properties\\BidDate.txt");
                        string Location = File.ReadAllText(@dir + "\\Properties\\Location.txt");
                        string Contact = File.ReadAllText(@dir + "\\Properties\\Contact.txt");
                        string[] JobInfo = { JobName, BidDate, Location, Contact };

                        ListViewItem item1 = new ListViewItem();

                        if (JobNumber != "")
                        {
                            listView1.Items.Add(JobNumber).SubItems.AddRange(JobInfo);
                            //  listView1.Items[].SubItems.Add(File.ReadAllText(@dir + "\\Properties\\JobName.txt"));
                        }
                    }
                    catch { }
                }
            }

            else
            {
                textBox1.Text = "0";
                listView1.Visible = false;
            }

【问题讨论】:

  • 不够清楚。你遇到了什么错误?发布事件正在运行的整个代码块。
  • 现在你添加了太多代码。哪一行抛出错误?永远不要使用空的 try-catch。使用调试器检查您的对象。您仍然没有显示在哪里您正在使用第一个代码块。
  • LarsTech 我更新了显示错误所在的行
  • 报错时e.ItemIndex的值是多少?也可以使用调试器检查 item 变量。
  • 它超过 0 但它是因为如果你看照片它不存在。这就是发生的事情。你看到左边的第一个文本框就是当前值现在说如果我向下一个并且没有错误,它将在下一列中显示数据。

标签: c# winforms visual-studio listview


【解决方案1】:

SelectedItems 是与 Items 集合不同的集合。

改变这个:

int Itemindex = e.ItemIndex;
ListViewItem item = listView1.SelectedItems[Itemindex];

到这里:

int Itemindex = e.ItemIndex;
ListViewItem item = listView1.Items[Itemindex];

【讨论】:

  • 谢谢你这么复杂。
猜你喜欢
  • 1970-01-01
  • 2016-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多