ListBox.SelectedItems 如果文本相同则获取索引
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());
}
如果实例相同,那么添加两次有什么问题?无论如何,请参阅此答案 (Selection bug for listbox where the list items are value types / structs and contain duplicates?) 以了解可能的解决方法。
本质上,WPF 中的 ListBox 似乎无法获取所有 selected 索引,因此如果您 select 两个相同的对象,您将只能获取 select列表中第一个实例的离子索引。然后解决方案是将您的员工包装到具有一些唯一 ID 的包装器中。
我认为不改变文本的最好方法是创建一个逻辑循环,以便记录和比较重复的索引...复杂的东西
正常使用的最好方法就是给它取个不同的名字。
有一个员工列表框,一个员工可以出现两次,因为一个员工可以有多个属性。
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());
}
如果实例相同,那么添加两次有什么问题?无论如何,请参阅此答案 (Selection bug for listbox where the list items are value types / structs and contain duplicates?) 以了解可能的解决方法。
本质上,WPF 中的 ListBox 似乎无法获取所有 selected 索引,因此如果您 select 两个相同的对象,您将只能获取 select列表中第一个实例的离子索引。然后解决方案是将您的员工包装到具有一些唯一 ID 的包装器中。
我认为不改变文本的最好方法是创建一个逻辑循环,以便记录和比较重复的索引...复杂的东西
正常使用的最好方法就是给它取个不同的名字。