当前位置:编程学习 > C#/ASP.NET >>

请教个关于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对象吗?

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

至于为什么这样,这与具体控件有关。看他们绑定数据源是什么。 --------------------编程问答--------------------
引用 1 楼 zero_fan 的回复:
C# code


这里

Category item = new Category(
                        dataReader.GetInt32(0),
                        dataReader.GetString(1),
                        dataReader.GetString(2));
……
--------------------编程问答-------------------- to:dattotzy
哦,我有看过web的ListItem对象的实现源码,他有两个属性text和value,像你说的,Category类似于ListItem,也好理解,但是ListItem对象是控件本身就定义好的,难道在winform下用下拉框,就必需要自己定义一个Category类吗? --------------------编程问答--------------------
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,