[英]Drag and drop the user control won't work in .net windows project
我创建了一个用户控件,它在工具箱中显示为表单组件。 然后当我尝试将用户控件拖放到表单上时,我得到了这个visual studio错误。
“在配置中找不到指定的命名连接,不打算与实体客户端提供程序一起使用或无效。”
为什么我收到此错误?
但是我可以拖放一些其他用户控件在同一个项目下。 我不知道在创建这个用户控件时我错过了什么。
请注意UserControl类中的代码在设计时运行。 构造函数,OnLoad方法和Load事件。 但也有像OnPaint()这样的方法。 如果此代码执行任何取决于正确设置的环境的代码,则该代码可能会抛出异常并导致设计者改变其关于将控件添加到表单的想法。 当你在“配置中找不到”错误时,似乎就是这种情况,但还没有配置文件。
正确使用DesignMode可以跳过此类代码。 像这样:
protected override void OnLoad(EventArgs e) {
if (!this.DesignMode) {
// Do stuff...
}
base.OnLoad(e);
}
如果您将数据库中的数据加载到userControl的构造函数中,则会显示此错误。
“加载数据或初始化实体框架”
所以解决方案是将加载数据的代码从构造函数移动到方法。 你可以称之为“loadData”。
并在父窗体的构造函数中调用此方法“loadData”
正如Hans所说,您可能需要在Constructor或OnLoad中使用DesignMode属性。 此外,请确保使用该连接的任何公共属性都具有此属性:
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public string Foo
{
get;
set;
}
这样,当您将控件添加到表单时,设计器不会尝试设置它们。 对于您在设计时不会设置的属性,这始终是一个好习惯。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.