Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在多列列表框C中分配多个DisplayMembers#_C#_.net_Listbox_Datasource - Fatal编程技术网

C# 在多列列表框C中分配多个DisplayMembers#

C# 在多列列表框C中分配多个DisplayMembers#,c#,.net,listbox,datasource,C#,.net,Listbox,Datasource,我有一个列表框,它具有IEnumerableList作为DataSource。 PhoneNumber类有两个属性编号和类型。 我想在单独的列中显示数字和类型,因此我将MultiColumn属性设置为true,但现在如何将DisplayMembers分配给各个列? 既然我们讨论的是ListBox,那么如何更改ListBox中各行的背景色呢?多列将项目放入所需的列中,以避免垂直滚动。它不会将单个项跨到多个列中。当然,它不支持多个DisplayMembers。改为使用或(更好)-两个控件都有列,并允

我有一个列表框,它具有
IEnumerable
List
作为
DataSource
。 PhoneNumber类有两个属性编号和类型。 我想在单独的列中显示数字和类型,因此我将
MultiColumn
属性设置为true,但现在如何将
DisplayMembers
分配给各个列? 既然我们讨论的是ListBox,那么如何更改ListBox中各行的背景色呢?

多列将项目放入所需的列中,以避免垂直滚动。它不会将单个项跨到多个列中。当然,它不支持多个
DisplayMembers
。改为使用或(更好)-两个控件都有列,并允许将不同的对象属性映射到这些列。另外,为正在使用的事件处理程序中的各个行设置背景颜色也非常容易。

这是WPF



作为一种方法,我放弃了多列。我添加了第二个列表框,并将其放置在第一个列表框的旁边,使它们看起来像一个对象。我将DataSource指定为另一个列表框,但将DisplayMember指定为Type。在运行时,两个对象看起来像是一个,选择总是同时高亮显示两个列表框,因为它们具有相同的数据源。此外,我还有一个很好的视觉效果,因为第一个列表框中的选择会在单击时发生变化,并复制到另一个列表框中。

为什么不使用
GridView
ListView
?这些都是为支持多列而构建的,
ListBox
是为单个列而构建的。我相信OP谈论的是WinForms,因为WPF ListBox没有DisplayMember属性
<ListView ItemsSource="{Binding Source=ListPhoneNumber">
  <ListView.View>
    <GridView>
      <GridViewColumn Header="Number" 
                      DisplayMemberBinding="{Binding Path=Number}" />
      <GridViewColumn Header="Type" 
                      DisplayMemberBinding="{Binding Path=Type}" />
    </GridView>
  </ListView.View>
</ListView>