2010-04-21 56 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"}); 
    }