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

派生ComboBox的诡异问题

想要一个显示若干固定年份的ComboBox,所以派生了ComboBox,在构造函数里面添加年份。

然后在窗体设计器中,把YearComboBox拖到form上,结果发现,设计器生成的代码中
竟然又把这些年份添加了一遍。似乎是设计器自动解析了我的构造函数生成了相应代码。结果现在的下拉框里面年份列表被添加了两次。

请问这是什么原因呢?

C#,VS2008

代码如下:
============YearCombobox.cs===============================

    class YearComboBox: ComboBox
    {
        public YearComboBox()
        {
            this.DropDownStyle = ComboBoxStyle.DropDownList;
            for (int i = 1998; i < 2008; i++)
            {
                this.Items.Add(i);
            }

            this.SelectedItem = 2000;

        }

        int SelectYear
        {
            get
            {
                return (int)this.SelectedItem;
            }
            set
            {
                this.SelectedItem = value;
            }
        }

    }
=========================================


==============Form1.Designer.cs=============================
        private void InitializeComponent()
{
...
...

            this.yearComboBox21.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
            this.yearComboBox21.FormattingEnabled = true;
            this.yearComboBox21.Items.AddRange(new object[] {
            1998,
            1999,
            2000,
            2001,
            2002,
            2003,
            2004,
            2005,
            2006,
            2007});
...
...
} --------------------编程问答-------------------- 忘了给分了,请问怎么才能编辑自己发的帖子呢,为什么说我没有权限 --------------------编程问答-------------------- 我也经常碰到这个问题。理论上好像添加的时候

        public YearComboBox() 
        { 
if(!DesignMode)
            this.DropDownStyle = ComboBoxStyle.DropDownList; 
            for (int i = 1998; i < 2008; i++) 
            { 
                this.Items.Add(i); 
            } 

            this.SelectedItem = 2000; 
}
        } 
这样子试试。
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,