ListToCombobox, 集合转到 Combobox 控件上

前置:需要建个 winform 窗口,并拖动控件

使用语言:C#

环境:.net Framework 4.5.2 (当前使用)

IDE:Visio studio 2019

核心代码:

 comboBox1.DataSource = books;//books 是一个 List<book>  集合
 comboBox1.DisplayMember = "name";//设置我们的显示名字
 comboBox1.ValueMember  = "id";//得到的值
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace ListToComboBox1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            List<book> books = new List<book>()
            {
                new book()
                {
                    id=1,
                    name="红楼梦"
                },
                new book()
                {
                    id=2,
                    name="西游记"
                },
                new book()
                {
                    id=3,
                    name="三国演义"
                },
                new book()
                {
                    id=4,
                    name="水浒传"
                }
            };

            comboBox1.DataSource = books;
            comboBox1.DisplayMember = "name";//设置我们的显示名字
            comboBox1.ValueMember  = "id";//设置我们的值
        }
    }


    public class book
    {
        public int id { get; set; }
        public string name { get; set; }
    }
}

完整流程:

环境:
环境

工具箱中找到我们的控件

下拉菜单控件
拖到见面上
拖到界面上的展示

建一个类:有 id(编号) 和 name(名字),这样可以区分显示的名字和我们选中名字得到的值

public class book
{
    public int id { get; set; }
    public string name { get; set; }
}

Form1_Load 方法的代码

private void Form1_Load(object sender, EventArgs e)
{
    List<book> books = new List<book>()
    {
        new book()
        {
            id=1,
            name="红楼梦"
        },
        new book()
        {
            id=2,
            name="西游记"
        },
        new book()
        {
            id=3,
            name="三国演义"
        },
        new book()
        {
            id=4,
            name="水浒传"
        }
    };

    comboBox1.DataSource = books;
    comboBox1.DisplayMember = "name";//设置我们的显示名字
    comboBox1.ValueMember  = "id";//设置我们的值
}

运行效果:
运行结果

也可以到gitee 直接拿到源码 https://gitee.com/daolizhe/WinformAboutToList
或者留邮箱。建议到 开源区 ,里面还有其他 list 转 到控件的一些案例,方便大家学习使用。

欢迎进qq群交流:704028989

在 QML 中动态添加数据到 `ComboBox` 控件一个常见的需求,尤其是在需要根据运行时条件更新选项列表的场景中。`ComboBox` 是 Qt Quick Controls 提供的一个 UI 组件,它允许用户从下拉列表中选择一个选项。为了实现动态添加数据,可以通过操作 `ComboBox` 的 `contentItem` 或 `model` 属性来实现。 ### 动态添加数据的方法 1. **使用 `addItem()` 方法** `ComboBox` 提供了 `addItem()` 方法,可以直接向控件中添加新的选项。该方法接受一个字符串参数,表示要添加的选项文本。例如: ```qml ComboBox { id: comboBox model: ["Option 1", "Option 2"] } Button { text: "Add Item" onClicked: { comboBox.addItem("New Option") } } ``` 上述代码展示了如何通过点击按钮向 `ComboBox` 中动态添加一个新的选项。初始时,`ComboBox` 的模型中包含两个选项,当用户点击按钮时,会调用 `addItem()` 方法添加一个新的选项。 2. **直接操作 `model` 属性** 如果需要更灵活地管理 `ComboBox` 的数据,可以直接操作其 `model` 属性。例如,可以将 `model` 设置为一个 `ListModel`,然后通过调用 `append()` 方法来动态添加数据[^1]。 ```qml ListModel { id: comboBoxModel ListElement { text: "Option 1" } ListElement { text: "Option 2" } } ComboBox { id: comboBox model: comboBoxModel delegate: ItemDelegate { width: parent.width text: "Item " + index } } Button { text: "Add Item" onClicked: { comboBoxModel.append({ text: "New Option" }) } } ``` 在这个例子中,`ComboBox` 的 `model` 被设置为一个 `ListModel`,并通过 `delegate` 属性定义了每个选项的显示方式。当用户点击按钮时,会调用 `append()` 方法向 `ListModel` 中添加一个新的选项。 3. **使用 `contentItem` 动态添加选项** 另一种方法是通过操作 `contentItem` 属性来动态添加选项。`contentItem` 是 `ComboBox` 的一个子项,表示下拉列表中的每个选项。可以通过遍历 `contentItem` 并添加新的 `Item` 来实现动态添加数据。 ```qml ComboBox { id: comboBox model: ["Option 1", "Option 2"] } Button { text: "Add Item" onClicked: { var newItem = Qt.createQmlObject('import QtQuick.Controls 2.15; Item { text: "New Option" }', comboBox, "dynamicItem") comboBox.contentItem.push(newItem) } } ``` 在这个例子中,通过 `Qt.createQmlObject()` 创建了一个新的 `Item`,并将其添加到 `ComboBox` 的 `contentItem` 中。这种方法较为复杂,但在某些特定场景下可能会更有用。 ### 示例代码 以下是一个完整的示例,展示了如何在 QML 中动态添加数据到 `ComboBox` 控件: ```qml import QtQuick 2.15 import QtQuick.Controls 2.15 ApplicationWindow { visible: true width: 400 height: 300 ListModel { id: comboBoxModel ListElement { text: "Option 1" } ListElement { text: "Option 2" } } ComboBox { id: comboBox model: comboBoxModel delegate: ItemDelegate { width: parent.width text: "Item " + index } } Button { text: "Add Item" onClicked: { comboBoxModel.append({ text: "New Option" }) } } } ``` 在这个示例中,`ComboBox` 的 `model` 被设置为一个 `ListModel`,并通过 `delegate` 属性定义了每个选项的显示方式。当用户点击按钮时,会调用 `append()` 方法向 `ListModel` 中添加一个新的选项。 ### 总结 在 QML 中动态添加数据到 `ComboBox` 控件有多种方法可供选择。最常用的方法是使用 `addItem()` 方法或直接操作 `model` 属性。这两种方法都简单易用,并且可以满足大多数动态添加数据的需求。对于更复杂的场景,还可以通过操作 `contentItem` 属性来实现更精细的控制。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盗理者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值