[英]ListBox.SelectedItems Get Index If Same Text
有一個雇員列表框,雇員可以出現兩次,因為雇員可以具有多個屬性。
List<Employee> employees = new List<Employee>();
foreach (var item in employeeListBox.SelectedItems)
{
employees.Add(company.getEmployees()[employeeListBox.Items.IndexOf(item)]);
}
目前正在使用上面的代碼,但是如果同一名同名員工出現兩次,則只會將該員工的第一個實例添加到列表中。
如果我嘗試同時添加兩個實例,則只會添加第一個實例,但是會添加兩次。
除了更改列表框中的文本外,還有另一種方法可以獲取員工的索引嗎?
public void addEmployee(Employee emp)
{
if (employees == null)
employees = new List<Employee>();
employees.Add(emp);
}
public void removeEmployee(Employee emp)
{
employees.Remove(emp);
}
public List<Employee> getEmployees()
{
return this.employees;
}
company = Company.Load(Utilities.ComanySerialized);
if (company.getEmployees() != null)
foreach (Employee b in company.getEmployees())
{
employeeListBox.Items.Add(b.getLastName() + " " + b.getFirstName() + "; " + b.getDateOfBirth());
}
如果實例相同,那么兩次添加又有什么問題? 無論如何,請參見此答案( 列表框的選擇錯誤,其中列表項是值類型/結構並包含重復項? ),以尋求可能的解決方法。
從本質上講,WPF中的ListBox似乎無法獲取所有選定的索引,因此,如果選擇兩個相同的對象,則只會獲取列表中第一個實例的選擇索引。 然后,解決方案是將您的員工包裝到具有某些唯一ID的包裝器中。
我認為不更改文本的最佳方法是創建一個邏輯循環,以便記錄和比較重復的索引。
正常使用的最佳方法就是命名不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.