WinForms/C#:将项目添加到 Combox 并控制项目值(数字)

发布于 2024-10-12 04:52:29 字数 291 浏览 1 评论 0原文

我一直使用设计器将我的项目填充到组合框中,我传递的只是一个字符串。

虽然现在我需要控制每个项目存储哪个键/索引。

我以为有一个 item 对象,但我查看了 ADD 方法,它接受对象。

我如何在控件中传递键/索引,即当我执行 SelectedItem 时返回的内容。

因此,如果我执行 selectedtext,我会返回一个显示在当前选定下拉列表中的字符串,但如果我执行 selecteditem,我想返回一个需要存储的自定义数字...

有什么想法如何做到这一点?

提前致谢

I have been populating my Items to a combox using the designer and all i pass is a string.

Although now i need to control which key/index is stored with each item.

I thought there was a item object, but i looked at the method ADD and it accepts object..

How do i pass in an control the key/index i.e. what is returned when i do SelectedItem.

So if i do selectedtext i get back a string that is displayed in the current selected dropdown but if i do selecteditem i want to get back a custom number that i need to store with it...

Any ideas how to do this?

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

野心澎湃 2024-10-19 04:52:29

您需要将其绑定到键\值对象的集合并使用 DisplayMemberValueMember 属性来设置显示/返回的内容。

下面是一个示例:

public class ComboItem
{
    public string stringValue { get; set; }
    public int indexValue { get; set; }
}

public void LoadCombo()
{
     List<ComboItem> list = new List<ComboItem>();
     // populate list...
     // then bind list
     myComboBox.DisplayMember = "stringValue";
     myComboBox.ValueMember = "indexValue";
     myComboBox.DataSource = list;
}

然后,

myComboBox.SelectedText       // will return stringValue
myComboBox.SelectedValue      // will return indexValue
myComboBox.SelectedItem       // will return the ComboItem itself
myComboBox.SelectedIndex      // will return the items index in the list

您也可以通过添加 Tag 属性(通常用于存储此类内容)通过创建自定义组合项,阅读此处了解如何执行此操作

You need to bind it to a collection of key\value objects and use the DisplayMember and ValueMember properties to set what is displayed/returned.

Heres an example:

public class ComboItem
{
    public string stringValue { get; set; }
    public int indexValue { get; set; }
}

public void LoadCombo()
{
     List<ComboItem> list = new List<ComboItem>();
     // populate list...
     // then bind list
     myComboBox.DisplayMember = "stringValue";
     myComboBox.ValueMember = "indexValue";
     myComboBox.DataSource = list;
}

Then

myComboBox.SelectedText       // will return stringValue
myComboBox.SelectedValue      // will return indexValue
myComboBox.SelectedItem       // will return the ComboItem itself
myComboBox.SelectedIndex      // will return the items index in the list

Alternatively you could store the index by adding a Tag property (which is often used to store things like this) by creating a custom combo item, have a read here for how to do this

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文