问题描述
加载用户控件或者设计视图有时候会报错,错误源于在构造函数中调用一些dll(由c++写的一些获取数据的方法,但是未登录前都会导致内存溢出),有没有办法标记.cs中的一段语句,使得vs在设计模式下不调用这段语句,这样设计视图就不会加载失败了,有人知道怎么用么?
解决方案
解决方案二:
你确定是写在了构造函数中,而不是写到设计器的代码里去了?
解决方案三:
使得vs在设计模式下不调用这段语句,这样设计视图就不会加载失败了,----------如果你用户控件的DLL需要登录才能使用,你即使想出办法跳过了这个代码,你设计视图是看到了,但是用户控件还是没加载出来,不是么
解决方案四:
引用1楼Z65443344的回复:
你确定是写在了构造函数中,而不是写到设计器的代码里去了?
设计器的代码是指vs自动生成的么,从加载设计视图失败的信息来看,的确是在构造函数中引发的错误
解决方案五:
窗体类有2个类文件,一个是form窗体本身的类文件,另一个自动生成的带有Designer标识,两个类都使用了parialclass表明2个类文件是同一个类下的代码不同的是设计器会执行Designer.cs里的代码生成开发时能看到的控件,而不带Designer的cs文件只有运行时执行.
解决方案六:
我不知道你所说的登陆是登陆到哪里,通过什么验证登陆但是如果不登陆就无法使用DLL的话,建议连登陆一起都放到Designer里去否则根本没法开发嘛.也不知道你之前的代码都是怎么编出来的
解决方案七:
引用5楼Z65443344的回复:
我不知道你所说的登陆是登陆到哪里,通过什么验证登陆但是如果不登陆就无法使用DLL的话,建议连登陆一起都放到Designer里去否则根本没法开发嘛.也不知道你之前的代码都是怎么编出来的
额···这么说,可能你们会觉得不可思议或者不科学甚至奇葩,我们获取数据不是通过ado.net或者ef模式的,而是通过调用c++的接口,c++返回数据函数都是通过认证中心,而没有登录的情况下,认证中心当然不会发数据过来了,所以...但是如果不在构造函数中调用获取数据的接口,那么很多类都要另外加一个专门获取数据函数,这样代码就繁琐了,实例化了一个对象还要多写一句obj.Refresh()
解决方案八:
你们取数据用C++还是什么,都无所谓问题就是,为什么给用户控件绑定数据的代码一定要放到设计器里,难道开发时就想直接看到数据?设计页面只放用户控件相关DLL就可以了数据应该在运行时加载
解决方案九:
引用7楼Z65443344的回复:
你们取数据用C++还是什么,都无所谓问题就是,为什么给用户控件绑定数据的代码一定要放到设计器里,难道开发时就想直接看到数据?设计页面只放用户控件相关DLL就可以了数据应该在运行时加载
解释下“运行时加载”,简单写几行代码也行
解决方案十:
因为我用的是WPF,没有Designer.cs这种文件在构造函数中加载数据是因为这样:publicclassStrategeCollection:List<Stratege>{publicStrategeCollection(){//调c++的方法加载数据}......//其他行为}
调用时自然是:StrategeCollectionlist=newStrategeCollection();//list.Load();......
如果不在构造函数中获取数据,那么每个这样的对象都要加Load方法了(把构造函数中获取数据的语句放到Load方法去)