【问题标题】:Loading simples text file list on listview C#在listview C#上加载简单的文本文件列表
【发布时间】:2014-01-13 21:49:32
【问题描述】:

所以我正在处理一个包含许多简单行的文本文件数据,我想将它们放在列表视图中,就像列表框一样。我需要它,因为在我在列表框上加载了一个长列表后,即使它显示了我的所有项目,我也无法在其上创建 FindString()。我将命令附加到组合框,并且与其他小列表一起使用,但是对于这个更大的列表,由于列表框的限制,索引引用似乎不起作用。 所以我想知道是否可以举个例子:

  • 第一行
  • 第2行
  • 第 3 行
  • 第 4 行

我的文本文件没有这个点,我只是为了使示例垂直。 在列表视图上。我在列表框上使用了方法 file.readllines 将其加载到其中,如果存在字符串查找方法来帮助我获取行中的文本。我该怎么办?

【问题讨论】:

  • 到目前为止你尝试了什么?

标签: c# string listview text listbox


【解决方案1】:

您可以自己编写您想要的搜索器。 这很容易。 只需迭代 ListView 中存在的每个数据。 然后通过 if 语句检查您的条件,并对结果做任何您想做的事情!

像这样:

    this.listView1.Items.Add("Test1");
    this.listView1.Items.Add("Test2");

    int Index = 0;

    foreach (ListViewItem t in this.listView1.Items)
    {
         if (t.Text == "Test1")
            Index = t.SelectedIndex;
            break;
    }

    this.listView1.Items[Index].Selected = true;

我向 ListView 添加了几个项目,然后使用 foreach 对其项目进行迭代,使用 if 语句过滤项目,最后显示我想要的项目。

【讨论】:

  • 谢谢,但是我如何在列表视图中选择一个带有对应字符串的项目?例如:listbox.selecteditem = "asdf";
  • 我把答案改成了你想要的。
【解决方案2】:

您必须添加一个事件处理程序。例如对于 ListView Load 的事件。 然后在事件处理程序中,您可以使用 File 类加载文件的内容。

例如,您可以这样做:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;

namespace WpfApplication2
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        // ListView Loaded - Eventhandler
        private void ListView_Loaded(object sender, RoutedEventArgs e)
        {
           string[] lines = File.ReadAllLines("E:\\test.txt");
           foreach (string line in lines)
           {
               listview.Items.Add(line);
           }
        }
    }
}

我刚刚测试了解决方案,它运行良好。 我希望我明白了你的意图。

【讨论】:

  • 谢谢你,但我遇到了一个问题,我的网络框架是 2.0,我无法更改它,所以 RoutedEventArgs 不存在,但即使我把你的代码放在我的 form_load 中,列表视图在小框中并排加载行,而不是像您的图像那样在列表中,我会尝试从设计师那里更改一些列表视图配置,以确保,谢谢 xD
【解决方案3】:

非常感谢帮助我,但我很高兴,我搜索了很多以扩展列表框的限制,但没有人能够帮助我,但是使用您的“foreach”代码,这种新的搜索方式帮助了我要在列表框上选择我的字符串,这里是使用组合框来随时更新的代码,让我从一个华丽的列表中选择值:

声明:

string result;

然后是组合框事件:

private void comboBox1_TextUpdate(object sender, EventArgs e)
    {
        foreach (string item in listBox1.Items)
        {
            listBox1.SelectionMode = SelectionMode.One;

                if (item == comboBox1.Text)
                {
                    result = item;
                }

        }
        listBox1.SelectedItem = result;

    }

【讨论】:

    猜你喜欢
    • 2016-03-24
    • 2013-05-25
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    相关资源
    最近更新 更多