请教个关于winform下拉框赋值的问题

levi99 2011-02-22 01:52:38
小弟学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;
...全文
389 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
levi99 2011-02-22
  • 打赏
  • 举报
回复
to:dattotzy
哦,我有看过web的ListItem对象的实现源码,他有两个属性text和value,像你说的,Category类似于ListItem,也好理解,但是ListItem对象是控件本身就定义好的,难道在winform下用下拉框,就必需要自己定义一个Category类吗?
纯唇Yu弄 2011-02-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zero_fan 的回复:]
C# code


这里

Category item = new Category(
dataReader.GetInt32(0),
dataReader.GetString(1),
dataReader.GetString(2));
……
[/Quote]
酋长 2011-02-22
  • 打赏
  • 举报
回复
你可以这样理解。
web中,添加的ListItem,它也是一个对象,也有属性,构造函数。

winform中的 Category实际上等同于ListItem对象。你把Category名称换成ListItem,不就是listitem对象吗?

从这个角度可以这么理解。

至于为什么这样,这与具体控件有关。看他们绑定数据源是什么。
levi99 2011-02-22
  • 打赏
  • 举报
回复
程式看得懂实现什么功能,但不知道为什么这样写,向对象方面的资料常,看着理解,但正正用起来不能知道这样做的意图是什么?有什么好的资料和建议推荐吗?
levi99 2011-02-22
  • 打赏
  • 举报
回复
LZ:这样写有什么好处呢?
在web应用里,添加的每一项是listItem对象,这还好理解,为什么这里可以是个Category对象,这个Category对象有没有规定是怎么样的?
酋长 2011-02-22
  • 打赏
  • 举报
回复
2楼正解。

建议楼主看一下面向对象方面的资料。
zero_liuf 2011-02-22
  • 打赏
  • 举报
回复


这里

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;
进行强类型转换


111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧