C# winform中ComboBox数据绑定的两种方法及效率详解

 更新时间:2023年08月04日 08:38:13   作者:chentiebo  
这篇文章主要给大家介绍了关于C# winform中ComboBox数据绑定的两种方法及效率,Winform ComboBox数据绑定是指将数据源中的数据与ComboBox控件进行关联,需要的朋友可以参考下

一、ComboBox两种数据绑定的方法

1.1、方法一、DataTable

           //创建DataTable
            DataTable dataTable = new DataTable();
 
            dataTable.Columns.Add("ID");
            dataTable.Columns.Add("Name");
 
            DataRow dataRow = dataTable.NewRow();
 
            dataRow["ID"] = "1";
            dataRow["Name"] = "方法1-测试1";
            dataTable.Rows.Add(dataRow);
 
            DataRow dataRow1 = dataTable.NewRow();
            dataRow1["ID"] = "2";
            dataRow1["Name"] = "方法1-测试2";
            dataTable.Rows.Add(dataRow1);
 
            DataRow dataRow2 = dataTable.NewRow();
            dataRow2["ID"] = "3";
            dataRow2["Name"] = "方法1-测试3";
            dataTable.Rows.Add(dataRow2);
 
            // ComboBox数据绑定
            this.comboBox1.DataSource = dataTable;
            comboBox1.DisplayMember = "Name";
            comboBox1.ValueMember = "ID";

1.2、方法二、List

       //创建Test类
        public class Test
        {
            public Test() { }
            public Test(int sid, string name, int age)
            {
                SID = sid;
                Name = name;
                Age = age;
            }
            public string Name { get; }
            public int Age { get; }
            public int SID { get; }
         }
        public List<Test> GetDate2()
        {
            List<Test> list = new List<Test>();
            Test test = new Test(1, "方法二--测试1", 21);
            list.Add(test);
            Test test1 = new Test(2, "方法二--测试2", 22);
            list.Add(test1);
            Test test2 = new Test(3, "方法二--测试3", 23);
            list.Add(test2);
           // ComboBox数据绑定Lsit
            this.comboBox2.DataSource = list;
            comboBox2.DisplayMember = "Name";
            comboBox2.ValueMember = "SID";
            return list;
        }

二、比较两种方法的效率

2.1、窗体设计

2.2、代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            方法一
            //this.comboBox1.DataSource = GteDate1();
            //comboBox1.DisplayMember = "Name";
            //comboBox1.ValueMember = "ID";
            方法二
            //this.comboBox2.DataSource = GetDate2();
            //comboBox2.DisplayMember = "Name";
            //comboBox2.ValueMember = "SID";
            #region 处理2
            //创建计时
            Stopwatch str1 = new Stopwatch();
            //计时开始
            str1.Start();
            //运行方法一
            GetDate1();
            // 计时停止
            str1.Stop();
            //控件label1显示出总共花费的时间(单位毫秒)
            this.label1Time1.Text = str1.Elapsed.TotalMilliseconds.ToString();
            //创建计时
            Stopwatch str2 = new Stopwatch();
            //计时开始
            str2.Start();
            //运行方法二
            GetDate2();
            // 计时停止
            str2.Stop();
            //控件label1显示出总共花费的时间(单位毫秒)
            this.label1Time2.Text = str2.Elapsed.TotalMilliseconds.ToString();
            #endregion 
        }
        #region ComboBox两种数据绑定的方法
        //方法一,dataTable
        public DataTable GetDate1()
        {
            //创建DataTable
            DataTable dataTable = new DataTable();
            dataTable.Columns.Add("ID");
            dataTable.Columns.Add("Name");
            DataRow dataRow = dataTable.NewRow();
            dataRow["ID"] = "1";
            dataRow["Name"] = "方法1-测试1";
            dataTable.Rows.Add(dataRow);
            DataRow dataRow1 = dataTable.NewRow();
            dataRow1["ID"] = "2";
            dataRow1["Name"] = "方法1-测试2";
            dataTable.Rows.Add(dataRow1);
            DataRow dataRow2 = dataTable.NewRow();
            dataRow2["ID"] = "3";
            dataRow2["Name"] = "方法1-测试3";
            dataTable.Rows.Add(dataRow2);
            // 数据绑定
            this.comboBox1.DataSource = dataTable;
            comboBox1.DisplayMember = "Name";
            comboBox1.ValueMember = "ID";
            return dataTable; 
        }
        // 方法二,list
            //创建Test类
        public class Test
        {
            public Test() { }
            public Test(int sid, string name, int age)
            {
                SID = sid;
                Name = name;
                Age = age;
            }
            public string Name { get; }
            public int Age { get; }
            public int SID { get; }
         }
        public List<Test> GetDate2()
        {
            List<Test> list = new List<Test>();
            Test test = new Test(1, "方法二--测试1", 21);
            list.Add(test);
            Test test1 = new Test(2, "方法二--测试2", 22);
            list.Add(test1);
            Test test2 = new Test(3, "方法二--测试3", 23);
            list.Add(test2);
            this.comboBox2.DataSource = list;
            comboBox2.DisplayMember = "Name";
            comboBox2.ValueMember = "SID";
            return list;
        }
         #endregion
    }
}

2.3、两种方法消耗时间对比

list相对于DataTable消耗的时长要少

总结

到此这篇关于C# winform中ComboBox数据绑定的两种方法及效率的文章就介绍到这了,更多相关C# winform ComboBox数据绑定内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Unity 实现贴花效果的制作教程

    Unity 实现贴花效果的制作教程

    有些游戏中的战斗痕迹的效果会通过贴花来实现的,贴花的方式多种多样。而在Unity中,有一种给官方文档提供代码的解决方案。本文将这些代码的基础上做一个绘图的贴花效果,感兴趣的童鞋可以参考一下
    2021-11-11
  • C#中yield return用法分析

    C#中yield return用法分析

    这篇文章主要介绍了C#中yield return用法,对比使用yield return与不使用yield return的流程,更直观的分析了yield return的用法,需要的朋友可以参考下
    2014-09-09
  • C#资源释放方法实例分析

    C#资源释放方法实例分析

    这篇文章主要介绍了C#资源释放方法,结合实例详细分析了C#资源释放的具体方法与相关技巧,需要的朋友可以参考下
    2016-02-02
  • C# 多线程更新界面的错误的解决方法

    C# 多线程更新界面的错误的解决方法

    这篇文章主要介绍了C# 多线程更新界面的错误方法,由于一个线程的程序,如果调用一个功能是阻塞的,那么就会影响到界面的更新,导致使用人员操作不便。所以往往会引入双线程的工作的方式,主线程负责更新界面和调度,而次线程负责做一些阻塞的工作,便有了下面春雨里方法
    2021-10-10
  • C#自定义繁体和简体字库实现中文繁体和简体之间转换的方法

    C#自定义繁体和简体字库实现中文繁体和简体之间转换的方法

    这篇文章主要介绍了C#自定义繁体和简体字库实现中文繁体和简体之间转换的方法,通过自定义繁简转换字库实现繁体与简体转换的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • c# 如何用组合替代继承

    c# 如何用组合替代继承

    这篇文章主要介绍了c# 如何用组合替代继承,帮助大家更好的理解和学习使用c#,感兴趣的朋友可以了解下
    2021-02-02
  • C#替换Word文档中的书签内容的详细步骤

    C#替换Word文档中的书签内容的详细步骤

    Word书签不但可以帮助读者快速跳转到想要查看的位置,而且可以用做“占位符”,本文总结了一个将常见的Word文档元素替换进书签的C#解决方案,希望对大家有所帮助
    2025-08-08
  • C#数值转换-隐式数值转换表参考

    C#数值转换-隐式数值转换表参考

    隐式转换就是直接使用,比如可以把一个 byte 类型直接用在 int 上
    2013-04-04
  • C#使用System.Buffer以字节数组Byte[]操作基元类型数据

    C#使用System.Buffer以字节数组Byte[]操作基元类型数据

    这篇文章介绍了C#使用System.Buffer以字节数组Byte[]操作基元类型数据的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-05-05
  • C#中的IEnumerable接口深入研究

    C#中的IEnumerable接口深入研究

    这篇文章主要介绍了.NET中的IEnumerable接口深入研究,分析出了它的实现原理和实现代码,需要的朋友可以参考下
    2014-07-07

最新评论