我正在尝试为我的组合框生成一个列表。这是在加载usercontrol时完成的。但是因为我根据哪些类实现某个接口来生成这个列表,所以表单的预览崩溃了。所以这个usercontrol在表单内部,表单试图“加载”usercontrol,找不到数据并抛出错误。我想禁用数据预览,只显示空的usercontrol
我该怎么做呢?
错误的屏幕截图:
使表单崩溃的代码段:
var type = typeof(IConnector);
var types = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(s => s.GetTypes())
.Where(p => type.IsAssignableFrom(p) && !p.IsInterface).ToList();
foreach (Type typeString in types)
{
object obj = Activator.CreateInstance(typeString);
connectors.Add((IConnector)obj);
}
connectionChooserComboBox.DataSource = connectors;
所以听起来你需要区分设计模式和运行时模式。
有一些事情可以帮助你,你需要选择哪一个最适合你;
有
DesignMode
财产LicenseModeUsage
财产工作方式不同,例如DesignMode在构造函数中不起作用,但LicenseMode不起作用。因此,您需要确定哪种方法最适合您,具体取决于您需要使用它的位置。
这篇文章比我更好地解释了它; http://dotnetfacts.blogspot.de/2009/01/identifying-run-time-and-design-mode.html