变量'控制'要么是未声明的,要么是从未分配过 - 除非是,并且应用程序编译

时间:2017-04-13 13:44:33

标签: c# winforms visual-studio-2017 designer

我的设计师视图今天开始抛出这个错误。但是,应用程序编译时没有错误,控件可用。

自定义控件在设计器中正确定义。如果我点击"忽略并继续"设计师加载很好,但提到的控件丢失了。

到目前为止,我已经尝试过:

清洁,重建然后重新启动visual studio还没有工作。

我昨天使用它后没有做任何改动,然后今天走进办公室。

我的构造函数是

public CalendarWindow(MainWindow owner)
{
    InitializeComponent();
    this._owner = owner;
}

public CalendarWindow(int job, int visit, DataTable customer, DataTable address)
{

    InitializeComponent();

    this.addressDetails = address;
    this.customerDetails = customer;
    this.visitID = visit;
    jobID = job;
}

和designer.cs中的InitializeComponent()内部声明了控件

// 
// panel1
// 
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
| System.Windows.Forms.AnchorStyles.Left) 
| System.Windows.Forms.AnchorStyles.Right)));
this.panel1.AutoScroll = true;
this.panel1.Controls.Add(this.label5);
this.panel1.Controls.Add(this.label4);
this.panel1.Controls.Add(this.calendar4); \\designer "error" points to here
this.panel1.Controls.Add(this.label3);
this.panel1.Controls.Add(this.calendar3); \\designer "error" points to here
this.panel1.Controls.Add(this.calendar2); \\designer "error" points to here    
this.panel1.Controls.Add(this.calendar1); \\designer "error" points to here
this.panel1.Controls.Add(this.label2);
this.panel1.Location = new System.Drawing.Point(218, 12);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(873, 628);
this.panel1.TabIndex = 10;
this.panel1.MouseDown += new 
System.Windows.Forms.MouseEventHandler(this.calendar1_MouseDown);

enter image description here

2 个答案:

答案 0 :(得分:1)

看起来我设法解决了这个问题。

虽然编译器在编译代码和运行应用程序时没有任何问题,但是它不喜欢控件本身的一些代码。

我只是设法抓住了这个,因为我试图在点击“忽略并继续”之后将相同的控件添加到表单中,此时它拒绝添加它并向我提供了导致问题的方向,这恰好发生在在一个不属于控制但被它使用的类中。

纠正错误解决了问题。

我没有明白为什么它会编译和运行没有问题,但反馈的错误没有引用有问题的工件。

答案 1 :(得分:0)

我遇到了同样的问题,并已解决。实际上,Visual Studio仅与X86控件一起使用,您不能在X64模式下创建用户控件并使用它。

您应该在Any CPU模式下添加一个新的类库并构建该库。然后可以将其DLL添加到您的项目中,并且可以正常工作。

如果没有,则必须转到配置管理器,并将“活动解决方案平台”设置为X64,对所有子项目也要这样做。 请记住,必须检查构建选项。 并转到类库的属性,然后单击生成选项卡。然后将“平台目标”设置为“任何CPU”。