在WinForm中不像Web中,ComboBox(WinForm)和DropDownList(Web)中和Item
不一样,WinForm中不可以直接添加Item的Value值,但是Web中可以。
现在这里写一个ComboBox大概可以实现添加Value值
class DropDownList:System.Windows.Forms.ComboBox
{
private bool _UseItemValue;
[System.ComponentModel.Description("是否启用Value值,如果是请在绑定数据之后调用BindValue方法")]
[System.ComponentModel.Category("数据")]
[System.ComponentModel.Browsable(true)]
[System.ComponentModel.DefaultValue(false)]
public bool UseItemValue
{
get { return _UseItemValue; }
set { _UseItemValue = value; }
}
/// <summary>
/// 绑定Value值到Item里面去
/// </summary>
/// <param name="sep">分隔字符</param>
public void BindValue(char sep)
{
#region 绑定Value值到Item里面去
if (_UseItemValue)
{
List<KeyValuePair<string, object>> dit = new List<KeyValuePair<string, object>>();
foreach (object obj in this.Items)
{
string text = "";
if (obj is System.Data.DataRowView)
{
text = ((System.Data.DataRowView)obj).Row.ItemArray[0].ToString();
}
else
{
text = obj.ToString();
}
string[] value = text.Split(sep);
try
{
dit.Add(new KeyValuePair<string, object>(value[0], value[1]));
}
catch
{
dit.Add(new KeyValuePair<string, object>(text, ""));
}
}
this.DataSource = dit;
this.DisplayMember = "Key";
this.ValueMember = "Value";
}
#endregion
}
}
生成成功后,在属性“数据”中的UseItemValue的值设为true
并调用方法BindValue就行了