如何在ListBox而不是ListView中显示结果?

时间:2011-05-09 03:24:43

标签: c# winforms

以下代码适用于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)
{

}

2 个答案:

答案 0 :(得分:0)

列表框不支持多列,除非您计划对所有者绘制列表框项目。因此,您需要首先决定如何将旧的多列数据映射到单个字符串。让我们说,为了论证,您决定将used-to-be-columns与逗号组合在一起,以便每个列表框项看起来像“SecName,SecSymbol,SecFileName”。

这是唯一可能完全神秘的部分。从这里开始,就像解决任何其他问题一样。你想用listbox1的用法替换lvwResult的用法吗?听起来像是一个搜索和替换我的工作。然后修复任何不编译的东西。构建列(SubItems)的代码肯定不会编译,但到目前为止,您已经决定如何处理它,所以这只是编写代码的问题。

答案 1 :(得分:0)

以下是将项目添加到列表框的示例。

    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";