我有同样的问题,在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()”中,每次重建等。但是它并没有为我固定。
让我检查一下 - 在这种情况下选择“忽略并继续”不会危害任何事情,对吗?
答案 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);
}
}