2010-04-21 73 views
0

我有一个下拉列表,当bool为false时,我只想显示某些选项。设计师抛出一个错误!

if (mainForm.boolEdit == true) 
     { 
      this.cmbStatusBox.Items.AddRange(new object[] { 
      "Cooking", 
      "In-transit", 
      "Delivered"}); 
     } 
     else 
     { 
      this.cmbStatusBox.Items.AddRange(new object[] { 
      "Ordered"}); 
     } 

我把这个代码放到saveForm.Designer.cs并得到了以下错误:

设计者不能205行处理代码:

如果(mainForm.boolEdit ==真) { this.cmbStatusBox.Items.AddRange(new object [] { “Cooking”, “In-transit”, “Delivered”}); } else { this.cmbStatusBox.Items.AddRange(new object [] { “Ordered”}); }

方法“的InitializeComponent”内的代码由设计器生成,并且不应被手动修改。请删除所有更改并再次尝试打开设计器。

我的替代品是什么?

编辑!现在我已经把设计师恢复正常如下:

this.cmbStatusBox.Items.AddRange(new object[] { 
     "Ordered", 
     "Cooking", 
     "In-transit", 
     "Delivered"}); 

,并在formload,我已经把以下内容:

if (mainForm.boolEdit == true) 
     { 
      this.cmbStatusBox.Items.AddRange(new object[] { 
      "Cooking", 
      "In-transit", 
      "Delivered"}); 
     } 
     else 
     { 
      this.cmbStatusBox.Items.AddRange(new object[] { 
      "Ordered"}); 
     } 

问题是,我现在有两个设计师和formload推杆名称放入下拉列表中。理想情况下,我只想从第二批代码中获得那些代码,但是当我单击编辑(这会引发已完成的操作)时,下拉列表将由设计器填充时保存的内容填充。如果表单填充下拉列表,当我编辑时,下拉列表不会指定已保存的内容。

任何想法?

回答

2

你不应该手动修改.designer.cs文件。另一种方法是使用表单的构造函数来执行此初始化或在某个加载事件中。

+0

所以我应该把这个代码的形式加载里面? – sark9012 2010-04-21 11:58:58

+0

是在表单加载或其他“阅读”/“填充”方法 - 不要修改设计器内容文件 – riffnl 2010-04-21 12:23:58

1

这种代码往往在Form.Load事件处理好坐。

0

设计师是添加项,应预期,因此当代码在你Form.Load方法运行,你需要添加任何东西给它之前清除在下拉列表中的项目。

this.cmbStatusBox.Items.Clear(); 

    if(mainForm.boolEdit) 
    { 
     this.cmbStatusBox.Items.AddRange(new object[] { 
      "Cooking", 
      "In-transit", 
      "Delivered"}); 
    } 
    else 
    { 
     this.cmbStatusBox.Items.AddRange(new object[] { 
      "Ordered"}); 
    }