我遇到了问题。 我正在创建一个使用我们的电话配置文件的小应用程序。 我创建了一个类叫电话并给予其4个属性:Listbox displayMember not working
private int extension;
private String sExtension;
private String userName;
private String filePath;
我已经包含了相应的get/set方法,以及:
public String Extension
{
get
{
return sExtension;
}
}
public String Path
{
get
{
return filePath;
}
}
我创建了一个实用工具类,做最的静态工作。包括一种方法来创建电话对象的List<Phone>
以填充ListBox
。
一切工作到将List<Phone>
返回作为ListBox
的数据源。我已将两个:
fileList = Directory.EnumerateFiles(path, "ext-*");
lst_Files.DataSource = Utility.populatePhoneList(fileList);
lst_Files.DisplayMember = "Extension";
lst_Files.ValueMember = "Path";
我仍然遇到的问题是仍然由对象名称填充(参考MSDN Article)
我已经通过这个论坛上一对夫妇的文章阅读ListBox
并且大多数提到同样的问题,我可能不会正确呼叫ListBox.DisplayMember
,但我相信我。
编辑:我已尝试退回List<T>
,ArrayList
,Array[]
。
编辑:代码实用
public static List<Phone> populatePhoneList(IEnumerable<String> newFileList)
{
List<Phone> phones = new List<Phone>();
Phone p = null;
for (int i = 0; i < newFileList.Count(); i++)
{
p = getPhoneInfo(newFileList.ElementAt(i));
phones.Add(p);
}
return phones;
}
public static Phone getPhoneInfo(String newPath)
{
StreamReader sr = new StreamReader(newPath);
Phone p1 = new Phone();
p1.setFilePath(newPath);
String testLine;
while (sr.Peek() >= 0)
{
testLine = sr.ReadLine();
if (testLine.Contains("reg.1.displayName"))
p1.setUserName(testLine.Substring(testLine.IndexOf("\"") + 1, ((testLine.LastIndexOf("\"") - 1) - testLine.IndexOf("\""))));
if (testLine.Contains("reg.1.address"))
p1.setExtension(testLine.Substring(testLine.IndexOf("\"") + 1, ((testLine.LastIndexOf("\"") - 1) - testLine.IndexOf("\""))));
}
return p1;
}
代码看起来没问题。我猜,我们必须看到你的'Utility.populatePhoneList'函数。 – LarsTech
可以显示Utility.populatePhoneList(fileList)的代码 –
在周末深入探讨这个问题之后,我开始禁用'ListBox'上的一些事件处理程序,并发现它正常工作。我发现我的'ListBox.SelectedIndexChanged'事件在系统完全填充前捕获了列表。我的解决方案是将'ListBox.SelectionMode'变成none,然后在ListBox被填充后重置。 –