如何在列表框而不是列表视图中显示结果

本文关键字:列表 视图 显示 结果 | 更新日期: 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";