【问题标题】:C# Listbox DisplayMember not updatingC# Listbox DisplayMember 未更新
【发布时间】:2017-01-26 04:35:33
【问题描述】:

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

我所拥有的是我试图在列表框中显示的已连接操纵杆的列表。

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

上面的 getSticks() 方法返回一个有效的操纵杆对象列表。我已经验证 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;
    }

【问题讨论】:

  • 分享getSticks()代码。
  • 如果可能,尝试在 foreach 循环中添加断点,以确保每个操纵杆都有一个有效的 Properties.InstanceName 字段(例如,不为空)。
  • 一般链接如stackoverflow.com/a/303283/6741868,建议在displaymember后绑定datasource,同时指定valuemember。

标签: c# listbox sharpdx


【解决方案1】:

DisplayMember 应该是您的属性的名称。举个例子。有一个名为 JoyStick 的类

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";

如果这不能帮助您了解 Display & Value 会员的用法或有其他任何问题,请告诉我。 问候!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 2017-05-23
    • 2011-07-10
    • 1970-01-01
    • 2015-07-01
    • 2010-11-03
    相关资源
    最近更新 更多