using
System;
using
System.Collections.Generic;
using
System.ComponentModel;
using
System.Data;
using
System.Drawing;
using
System.Linq;
using
System.Text;
using
System.Windows.Forms;
namespace
Comb {
public
partial
class
Form1 : Form {
public
Form1() { InitializeComponent(); }
private
void
addSt() { List
<
ComboBoxItem
<
Student
>>
list
=
new
List
<
ComboBoxItem
<
Student
>>
(); list.Add(
new
ComboBoxItem
<
Student
>
(
""
,
null
)); Student s1
=
new
Student(
"
张三
"
,
15
); Student s2
=
new
Student(
"
李四
"
,
20
); list.Add(
new
ComboBoxItem
<
Student
>
(s1.Name, s1)); list.Add(
new
ComboBoxItem
<
Student
>
(s2.Name, s2));
//
绑定下拉框
comboBox1.DataSource
=
list; comboBox1.DisplayMember
=
"
ItemText
"
; comboBox1.ValueMember
=
"
ItemValue
"
; }
private
void
comboBox1_SelectedIndexChanged(
object
sender, EventArgs e) {
//
addSt();
if
(comboBox1.SelectedIndex
>
0
) { Student s
=
(Student)comboBox1.SelectedValue; MessageBox.Show(s.Age.ToString()); } }
private
void
button1_Click(
object
sender, EventArgs e) { }
private
void
Form1_Load(
object
sender, EventArgs e) { addSt(); } }
public
class
ComboBoxItem
<
T
>
{
//
ItemText显示的文字
//
private string _itemText;
public
string
ItemText {
get
;
set
;
//
get { return _itemText ; }
//
set { _itemText = value; }
}
//
ItemValue实际的值
//
private T _itemValue;
public
T ItemValue {
get
;
set
;
//
get { return _itemValue; }
//
set { _itemValue = value; }
}
//
构造方法
public
ComboBoxItem(
string
itemText, T itemValue) {
//
this._itemText = itemText;
//
this._itemValue = itemValue;
ItemText
=
itemText; ItemValue
=
itemValue; }
//
自定义方法
//
确定指定的对象是否等于当前对象
public
override
bool
Equals(
object
obj) {
//
2643993
if
(obj
is
ComboBoxItem
<
T
>
) { ComboBoxItem
<
T
>
rhs
=
(ComboBoxItem
<
T
>
)obj;
//
if (_itemText.Equals(rhs.ItemText) && _itemValue.Equals(rhs.ItemValue))
if
(ItemText.Equals(rhs.ItemText)
&&
ItemValue.Equals(rhs.ItemValue))
return
true
;
else
return
false
; }
else
return
false
; }
//
获取当前对象的哈希代码
public
override
int
GetHashCode() {
return
ItemText.GetHashCode()
+
ItemValue.GetHashCode(); }
//
重载相等操作符
public
static
bool
operator
==
(ComboBoxItem
<
T
>
lhs, ComboBoxItem
<
T
>
rhs) {
return
lhs.Equals(rhs); }
//
重载不等
public
static
bool
operator
!=
(ComboBoxItem
<
T
>
lhs, ComboBoxItem
<
T
>
rhs) {
return
!
(lhs.Equals(rhs)); } }
//
学生对象
public
class
Student {
//
姓名
private
string
_name;
public
string
Name {
get
{
return
_name; } }
//
年龄
private
int
_age;
public
int
Age {
get
{
return
_age; } }
//
构造方法
public
Student(
string
name,
int
age) { _name
=
name; _age
=
age; } } }
转载于:https://www.cnblogs.com/wind8250/archive/2008/05/13/1194917.html
转载请注明原文地址: https://win8.8miu.com/read-20257.html