2017-01-26 123 views
0

我正在使用列表框,但我无法让DisplayMember正确更新,我不知道为什么。C#Listbox DisplayMember不更新

我所拥有的是我试图在列表框中显示的连接游戏杆列表。

 joyListBox.DataSource = getSticks(); 
     joyListBox.DisplayMember = "Properties.InstanceName"; 

上面的getSticks()方法返回Joystick对象的有效列表。我已经验证了Properties.InstanceName是一个显示游戏杆友好名称的字符串。该程序运行时没有错误,但仅显示游戏杆的默认(toString)值。

每请求时,我加入了getSticks()代码:

私人列表getSticks(){

 List<Joystick> sticks = new List<Joystick>(); 
     foreach (DeviceInstance device in input.GetDevices(DeviceClass.GameControl, DeviceEnumerationFlags.AttachedOnly)) 
     { 
      Joystick stick = new Joystick(input, device.InstanceGuid); 
      sticks.Add(stick); 
     } 
     return sticks; 
    } 
+0

分享'getSticks()'代码。 –

+0

如果可能,尝试在foreach循环中添加一个断点,以确保每个游戏杆都有一个有效的“Properties.InstanceName”字段(例如非空)。 –

+0

从像http://stackoverflow.com/a/303283/6741868这样的一般链接,建议在displaymember之后绑定数据源,并指定一个valuemember。 –

回答

0

DisplayMember应该是你的属性的名称。举一个例子。有一个名为操纵杆

public class JoyStick 
{ 
    private int key; 
    private string value; 
    public JoyStick() { } 
    public int Key 
    { 
     set { this.key = value; } 
     get { return this.key; } 
    } 
    public string Value 
    { 
     set{this.value=value;} 
     get { return this.value; } 
    } 
} 

因此类,显示&超值会员会像

 joyListBox.DisplayMember = "Value"; 
     joyListBox.ValueMember = "Key"; 

如果这并不能帮助您了解展示&价值成员的使用还是有别的,那么,让我知道。 关心!