请教个关于winform下拉框赋值的问题
小弟学c#,这个类,实在不知道为什么这样写,有什么作用,了解的能帮我说下不?谢谢啦
namespace ProductMaintenance
{
public class Category
{
int _categoryId;
string _name;
string _description;
public int CategoryId
{
get { return _categoryId; }
}
public string Name
{
get { return _name; }
}
public string Description
{
get { return _description; }
}
public Category(int categoryId, string name, string description)
{
_categoryId = categoryId;
_name = name;
_description = description;
}
public override string ToString()
{
return _name;
}
}
}
//这里是给cmbCategoryg下拉框赋值,为什么 "Category item = new Category("这样写呢
using (IDataReader dataReader = _db.ExecuteReader("GetCategories"))
{
// Processing code
while (dataReader.Read())
{
Category item = new Category(
dataReader.GetInt32(0),
dataReader.GetString(1),
dataReader.GetString(2));
this.cmbCategory.Items.Add(item);
}
}
--------------------编程问答--------------------
//这是下面的使用(Category)this.cmbCategory.SelectedItem看不懂
Category selectedCategory = (Category)this.cmbCategory.SelectedItem;
这里
Category item = new Category(
dataReader.GetInt32(0),
dataReader.GetString(1),
dataReader.GetString(2));
表示实例化了Category 类,使用Category 类的构造函数为定义的:
public Category(int categoryId, string name, string description)
{
_categoryId = categoryId;
_name = name;
_description = description;
}
//这是下面的使用(Category)this.cmbCategory.SelectedItem看不懂
Category selectedCategory = (Category)this.cmbCategory.SelectedItem;
这里是因为
using (IDataReader dataReader = _db.ExecuteReader("GetCategories"))
{
// Processing code
while (dataReader.Read())
{
Category item = new Category(
dataReader.GetInt32(0),
dataReader.GetString(1),
dataReader.GetString(2));
this.cmbCategory.Items.Add(item);
}
}
this.cmbCategory.Items添加的每一项即为一个Category对象,所以可以使用
(Category)this.cmbCategory.SelectedItem;
进行强类型转换
--------------------编程问答-------------------- --------------------编程问答-------------------- 2楼正解。
建议楼主看一下面向对象方面的资料。 --------------------编程问答-------------------- LZ:这样写有什么好处呢?
在web应用里,添加的每一项是listItem对象,这还好理解,为什么这里可以是个Category对象,这个Category对象有没有规定是怎么样的? --------------------编程问答-------------------- 程式看得懂实现什么功能,但不知道为什么这样写,向对象方面的资料常,看着理解,但正正用起来不能知道这样做的意图是什么?有什么好的资料和建议推荐吗? --------------------编程问答-------------------- 你可以这样理解。
web中,添加的ListItem,它也是一个对象,也有属性,构造函数。
winform中的 Category实际上等同于ListItem对象。你把Category名称换成ListItem,不就是listitem对象吗?
从这个角度可以这么理解。
至于为什么这样,这与具体控件有关。看他们绑定数据源是什么。 --------------------编程问答-------------------- --------------------编程问答-------------------- to:dattotzy
哦,我有看过web的ListItem对象的实现源码,他有两个属性text和value,像你说的,Category类似于ListItem,也好理解,但是ListItem对象是控件本身就定义好的,难道在winform下用下拉框,就必需要自己定义一个Category类吗? --------------------编程问答--------------------
补充:.NET技术 , C#