gpt4 book ai didi

C#:如何从类方法绑定(bind)到 ListBox DisplayMember 和 ValueMember 结果?

转载 作者:行者123 更新时间:2023-12-02 15:31:45 25 4
gpt4 key购买 nike

我正在尝试创建包含键值对的列表框。我从类中获得的那些数据是从 getter 提供的。

类:

public class myClass
{
private int key;
private string value;

public myClass() { }

public int GetKey()
{
return this.key;
}

public int GetValue()
{
return this.value;
}
}

程序:

private List<myClass> myList;

public void Something()
{
myList = new myList<myClass>();

// code for fill myList

this.myListBox.DataSource = myList;
this.myListBox.DisplayMember = ??; // wanted something like myList.Items.GetValue()
this.myListBox.ValueMember = ??; // wanted something like myList.Items.GetKey()
this.myListBox.DataBind();
}

类似这个话题[ Cannot do key-value in listbox in C# ] 但我需要使用从方法返回值的类。

是否可以做一些简单的事情,或者我最好完全重新设计我的思路(和这个解决方案)?

谢谢指教!

最佳答案

DisplayMemberValueMember 属性需要使用属性的名称(作为字符串)。你不能使用方法。所以你有两个选择。更改您的类以返回属性或创建一个从 myClass 派生的类,您可以在其中添加两个缺少的属性

public class myClass2 : myClass
{

public myClass2() { }

public int MyKey
{
get{ return base.GetKey();}
set{ base.SetKey(value);}
}

public string MyValue
{
get{return base.GetValue();}
set{base.SetValue(value);}
}
}

现在您已经进行了这些更改,您可以使用新类更改您的列表(但修复初始化)

// Here you declare a list of myClass elements
private List<myClass2> myList;

public void Something()
{
// Here you initialize a list of myClass elements
myList = new List<myClass2>();

// code for fill myList
myList.Add(new myClass2() {MyKey = 1, MyValue = "Test"});

myListBox.DataSource = myList;
myListBox.DisplayMember = "MyKey"; // Just set the correct name of the properties
myListBox.ValueMember = "MyValue";
this.myListBox.DataBind();
}

关于C#:如何从类方法绑定(bind)到 ListBox DisplayMember 和 ValueMember 结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25103408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com