我创建了一个自定义控件(从 Control 继承的类)。当我把它放在表单上时,我可以在 Visual Studio IDE 上使用它。它向我显示了一个错误,我没有看到表单。
错误消息是这样的: La variable 'ctrlImagen' no está declarada o no se asignó nunca。
这是一个紧凑框架应用程序的 winform。
我该如何解决这个问题?(它的类继承自 UserControl 它工作得很好)
我创建了一个自定义控件(从 Control 继承的类)。当我把它放在表单上时,我可以在 Visual Studio IDE 上使用它。它向我显示了一个错误,我没有看到表单。
错误消息是这样的: La variable 'ctrlImagen' no está declarada o no se asignó nunca。
这是一个紧凑框架应用程序的 winform。
我该如何解决这个问题?(它的类继承自 UserControl 它工作得很好)
听起来很疯狂,但 Visual Studio 会在设计器中为您的控件选择性地执行代码。首先要检查的是您的构造函数。确保你有一个空的、默认的构造函数,它是公共的,即使你从不打算使用它。之后确保您与布局事件(例如调整大小)相关的任何代码都可以使用,这些可能是罪魁祸首,因为当我的自定义控件在设计器中不起作用时,我总是会发现问题。
听起来您的控件代码中有错误。这听起来像是阻止控件呈现的运行时错误。
重新阅读您的代码并寻找潜在的空指针异常、未分配的变量、堆栈溢出等。错误就在它们的某个地方。
您的用户控件是否有可能没有公共默认构造函数?如果构造函数不是公共的,我会得到一个类似的错误“变量'userControlX'要么未声明或从未分配'。
不过,需要更多信息。
在执行表单初始化逻辑之前执行的初始化逻辑中似乎发生了设计时异常。一个很好的例子是由表单包含的用户控件的默认构造函数(或它调用的一个或多个方法)触发的 NullPointerException。
我把它放在构造函数上来解决问题: this.ClientSize = new Size(21, 21);
我班的开场白是这样的:
public class ControlMapa : Control
{
public ControlMapa()
{
this.ClientSize = new Size(21, 21);
...
谢谢!