以下代码适用于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)
{
}
答案 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";