设计师抛出错误!

时间:2010-04-21 11:37:02

标签: c#

我有一个下拉列表,当bool为true时,我只想显示某些选项。

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行处理代码:

if(mainForm.boolEdit == true)             {                 this.cmbStatusBox.Items.AddRange(new object [] {                 “烹饪”,                 “在途中”,                 “传递”});             }             其他             {                 this.cmbStatusBox.Items.AddRange(new object [] {                 “有序”});             }

方法'InitializeComponent'中的代码由设计者生成,不应手动修改。请删除所有更改,然后再次尝试打开设计器。

我的替代方案是什么?

EDIT!我现在让设计师恢复正常如下:

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

并在表单中,我已经提出以下内容:

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

问题是,我现在有设计器和formload将名称放入下拉列表中。理想情况下,我只想要第二批代码中的那些代码,但是当我单击编辑(这会显示已经完成的内容)时,如果设计者填充了下拉列表,则会通过保存的内容填充下拉列表。如果formload填充下拉列表,则在编辑时,下拉列表不会指定已保存的内容。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

这种代码通常很好地存在于Form.Load事件处理程序中。

答案 2 :(得分: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"});
    }