zoukankan      html  css  js  c++  java
  • c#(winform)中ComboBox添加Key/Value项、获取选中项、根据Key

    WinForm下的ComboBox默认是以多行文本来设定显示列表的, 这通常不符合大家日常的应用, 

    因为大家日常应用通常是键/值对的形式去绑定它的.

    参考了一些网上的例子,最终写了一个辅助类用于方便对ComboBox的操作:

    用下面这个类的实例作为ComboBox的添加项:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Windows.Forms;
    
    namespace tp7309.Winform
    {
        public class ListItem
        {
            public string Key { get; set; }
            public string Value { get; set; }
    
            public ListItem(string strKey, string strValue)
            {
                this.Key = strKey;
                this.Value = strValue;
            }
            public override string ToString()
            {
                return this.Key;
            }
    
            /// <summary>
            /// 根据ListItem中的Value找到特定的ListItem(仅在ComboBox的Item都为ListItem时有效)
            /// </summary>
            /// <param name="cmb">要查找的ComboBox</param>
            /// <param name="strValue">要查找ListItem的Value</param>
            /// <returns>返回传入的ComboBox中符合条件的第一个ListItem,如果没有找到则返回null.</returns>
            public static ListItem FindByValue(ComboBox cmb, string strValue)
            {
                foreach (ListItem li in cmb.Items)
                {
                    if (li.Value == strValue)
                    {
                        return li;
                    }
                }
                return null;
            }
    
            /// <summary>
            /// 根据ListItem中的Key找到特定的ListItem(仅在ComboBox的Item都为ListItem时有效)
            /// </summary>
            /// <param name="cmb">要查找的ComboBox</param>
            /// <param name="strValue">要查找ListItem的Key</param>
            /// <returns>返回传入的ComboBox中符合条件的第一个ListItem,如果没有找到则返回null.</returns>
            public static ListItem FindByText(ComboBox cmb, string strText)
            {
                foreach (ListItem li in cmb.Items)
                {
                    if (li.Value == strText)
                    {
                        return li;
                    }
                }
                return null;
            }
        }
    }

    使用前引入命名空间:tp7309.Winform

      添加项:  

    cmb1.Items.Add(new ListItem("key1", "value1"));
    cmb1.Items.Add(new ListItem("key2", "value2"));

    获取选中项:

    ListItem li = (ListItem)cmb1.SelectedItem;
    ListItem li1 = ListItem.FindByValue(cmb1, "value1");   //根据Key得到选中项
    ListItem li2 = ListItem.FindByText(cmb1, "key1");      //根据Value得到选中项
    string strKey = li.Key;   //得到选中项Key
    string strValue = li.Value;   //得到选中项Value

    设置选中项:

    cmb1.SelectedIndex = 0;    //根据索引修改选中项
    cmb1.SelectedItem = ListItem.FindByValue(cmb1, "value1");   //根据Key得到选中项
    cmb1.SelectedItem = ListItem.FindByText(cmb1, "key1");      //根据Value得到选中项

  • 相关阅读:
    平衡二叉树之RB树
    平衡二叉树之AVL树
    实现哈希表
    LeetCode Median of Two Sorted Arrays
    LeetCode Minimum Window Substring
    LeetCode Interleaving String
    LeetCode Regular Expression Matching
    PAT 1087 All Roads Lead to Rome
    PAT 1086 Tree Traversals Again
    LeetCode Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/chengulv/p/3836726.html
Copyright © 2011-2022 走看看