如何在列表框而不是列表视图中显示结果
本文关键字:列表 视图 显示 结果 | 更新日期: 2023-09-27 17:55:21
下面的代码适用于lvwResult
,但是我如何在listbox1
中显示结果?
我只想使用listbox1
,而不是lvwResult
.
private void btnBrowse_Click(object sender, System.EventArgs e)
{
folderBrowserDialog1.ShowDialog();
if (folderBrowserDialog1.SelectedPath != "")
{
txtDirectory.Text = folderBrowserDialog1.SelectedPath;
}
}
private void btnClose_Click(object sender, System.EventArgs e)
{
this.Close ();
}
private void btnSearchNow_Click(object sender, System.EventArgs e)
{
MLSecurityFinder lSecFinder = new MLSecurityFinderClass ();
int iCounter = 0;
lvwResult.Items.Clear ();
lSecFinder.bScanSubDirectories = chkSubfolders.Checked;
try
{
lSecFinder.FindSecurity (txtSymbol.Text, txtDirectory.Text);
while (lSecFinder.bSecLeft)
{
ListViewItem lItem = lvwResult.Items.Insert (iCounter, lSecFinder.SecName);
lItem.SubItems.Add (lSecFinder.SecSymbol);
lItem.SubItems.Add (lSecFinder.SecFileName);
lSecFinder.FindNextSecurity();
iCounter++;
}
}
catch (System.Runtime.InteropServices.COMException ComEx)
{
//MessageBox.Show (ComEx.Message);
}
finally
{
lSecFinder.DestroySearchDialog ();
}
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
列表框不支持多列,除非您计划所有者绘制列表框项。因此,您需要首先决定如何将旧的多列数据映射到单个字符串。假设,为了论证起见,您决定将"习惯"列与逗号组合在一起,以便每个列表框项看起来像"SecName,SecSymbol,SecFileName"。
这是唯一可能神秘的部分。从这里开始,就像解决任何其他问题一样。您想将 lvwResult 的用法替换为 listbox1 的用法吗?对我来说,这听起来像是搜索和替换的工作。然后修复无法编译的内容。构建列(子项)的代码肯定不会编译,但此时,您已经决定了如何处理它,所以这只是编写代码的问题。
这里只是一个将项目添加到列表框的示例。
public class SampleData {
public string Name { get; set; }
public int Id { get; set; }
}
现在您有以下代码:
List<SampleData> sampleList = new List<SampleData>() {
new SampleData() { Id = 1, Name = "Peyton" }
};
listBox1.DataSource = sampleList;
listBox1.DisplayMember = "Name";
或者,您可以直接使用 items 属性获得它。
listBox1.Items.Add(new SampleData() { Id = 1, Name = "Sample" });
listBox1.DisplayMember = "Name";