所以我正在处理包含许多简单行的文本文件数据,我想将它们放在列表视图中,与列表框一样。我需要这个,因为我在列表框上加载一个长列表,即使它显示我的所有项目,我也无法在它上面创建一个FindString()。我将命令附加到一个组合框,并与其他小的列表一起工作,但是由于列表框限制,似乎索引引用不起作用。 所以我想知道是否可以放置,例如:
我的文本文件没有这个点,我只是为了使示例垂直。 在列表视图上。我在listbox上使用了方法file.readllines来加载它,如果存在一个字符串find方法来帮助我获取行上的文本。我该怎么办?
答案 0 :(得分:1)
您必须添加一个事件处理程序。例如,对于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);
}
}
}
}
我刚刚测试了解决方案,它运行正常。 我希望我有你的意图。
答案 1 :(得分: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语句过滤项目,最后显示我想要的项目。
答案 2 :(得分:0)
非常感谢帮助我,但我对它进行了解决,我搜索了很多扩展列表框的限制,但没有人能够帮助我,但是使用你的“foreach”代码,这种新的搜索方式帮助了我在列表框中选择我的字符串,这里是使用组合框进行evertime更新的代码,从gourgeous列表中获取所选值:
声明:
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;
}