今天看了listview和listbox两个控件的视频教程,其中说了一种绑定数据源的方法,感觉不错,所以贴出来与大家一起分想
比如先在工程里建一个Product类:(在此类中可以连接数据库)
此类代码如下 :
using System;
using System.Collections.Generic;
using System.Text;
namespace winform1
{
class Product//创建一个Product类
{
public Product(string code, string name)
{
_code = code;
_name = name;
}
public Product(string code, string name, int score)//重载构造函数
{
_code = code;
_name = name;
_score = score;
}
private string _code;
public string Code
{
get { return _code; }
set { _code = value; }
}
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private int _score;
public int Score
{
get { return _score; }
set { _score = value; }
}
public override string ToString()//重写tostring()方法,以便按照想要的格式输出
return _code + "-" + _name;
}
public static IList GetAllProduct()
{
IList all = new List();
all.Add(new Product("001", "苹果"));
all.Add(new Product("002", "橡胶"));
all.Add(new Product("003", "花生"));
return all;
}
public static IList GetAllRichProduct()//创建两个静态方法
{
IList all = new List();
all.Add(new Product("001", "苹果",100));
all.Add(new Product("002", "橡胶",200));
all.Add(new Product("003", "花生",300));//这里可以得到数据库中的数据
return all;
}
}
}
然后就可以在其它文件中调用此类了:
比如以下是一个以Product为数据源来填充listview内容的方法:
private void button2_Click(object sender, EventArgs e)
{
this.listView1.Items.Clear();//首先清除原有所有记录
IList
foreach (Product prod in all)//遍历all中所有记录
{
string[] Str = new string[3];//得到此记录相应字段的值
Str[0] = prod.Code;
Str[1] = prod.Name;
Str[2] = prod.Score.ToString();
ListViewItem item = new ListViewItem(Str, 0);
this.listView1.Items.Add(item);//填充
}
}
另外,此数据源还可以用来作为listBox的数据源:
比如 :
private void button1_Click(object sender, EventArgs e)//此事件中是向listbox填充数据
{
IList all = Product.GetAllProduct();
foreach (Product prod in all)
{
this.comboBox1.Items.Add(prod);//填充comboBox控件内容
}
}
//以下方法是选 中listbox某行后得到相应字段值:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
MessageBox.Show(this.comboBox1.SelectedIndex.ToString());//得到索引
Product prod = (Product)this.comboBox1.SelectedItem; //将选中行强转化为product类型
string myProd = prod.Name;//得到Name段的值 ,还可以得到其它的字段的值
MessageBox.Show(myProd.ToString());
}