变量未声明或从未分配,重建不起作用

时间:2016-04-01 23:10:05

标签: c# winforms visual-studio

我有同样的问题,在MS论坛上已经提到了很多 - 我有一个组合框控件和一个字符串数组,所以我将字符串数组分配给组合框

Form1.Designer.cs

private void InitializeComponent()
{
...
this.ComboBox_Target_0.Items.AddRange(Ranks);
...
}

数组本身声明如下:

string[] Ranks = { "Rank 1", "Rank 2", "Rank 3", "Rank 4", "Rank 5", "Rank 6", "Rank 7", "Rank 8", "Rank 9", "Rank 10", "Rank 11", "Rank 12" };

如果我构建我的解决方案,表单运行正常,组合框列出了所有项目,它工作正常。然而,表单设计师拒绝开始说“变量排名未声明或从未分配”。

我已经看到了有关同一问题的其他问题,并且已经尝试了他们的(唯一)解决方案 - 重建解决方案,关闭VS并重新打开它。但这没有帮助。我尝试将字符串数组放在“InitializeComponent()”和“public Form1()”中,每次重建等。但是它并没有为我固定。

让我检查一下 - 在这种情况下选择“忽略并继续”不会危害任何事情,对吗?

1 个答案:

答案 0 :(得分:0)

我同意您不应修改设计器文件。如果出于某种原因需要在设计时使用这些值,并且您不想使用编辑器,那么我让它无错误地工作的唯一方法就是将它放在InitializeComponent的最顶层方法:

string[] Ranks = new string[] { "Rank 1", "Rank 2", "Rank 3", "Rank 4", "Rank 5", "Rank 6", "Rank 7", "Rank 8", "Rank 9", "Rank 10", "Rank 11", "Rank 12" };

我在声明中添加了new string[]。这基于编辑器在设计时如何创建列表:

this.ComboBox_Target_0.Items.AddRange(new object[] {...

在定义Ranks之后,您的专线将会正常运行:

this.ComboBox_Target_0.Items.AddRange(Ranks);

如果您只需要在运行时使用这些值,最好这样做(或其变体):

public partial class Form1 : Form
{
    string[] Ranks = { "Rank 1", "Rank 2", "Rank 3", "Rank 4", "Rank 5", "Rank 6", "Rank 7", "Rank 8", "Rank 9", "Rank 10", "Rank 11", "Rank 12" };

    public Form1()
    {
        InitializeComponent();
        this.ComboBox_Target_0.Items.AddRange(Ranks);
    }
}