Winforms 禁用数据预览
Winforms disable data preview
我正在尝试为我的组合框生成一个列表。
这是在加载用户控件时完成的。但是因为我是根据 类 实现某个接口生成这个列表,所以表单预览崩溃了。所以这个用户控件在表单内部,表单试图 "load" 用户控件,找不到数据并抛出错误。我想禁用数据预览,只显示空的 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 可以。因此,您需要根据需要使用它的位置来确定最适合您的方法。
这个 post 比我解释得更好;
http://dotnetfacts.blogspot.de/2009/01/identifying-run-time-and-design-mode.html
我正在尝试为我的组合框生成一个列表。 这是在加载用户控件时完成的。但是因为我是根据 类 实现某个接口生成这个列表,所以表单预览崩溃了。所以这个用户控件在表单内部,表单试图 "load" 用户控件,找不到数据并抛出错误。我想禁用数据预览,只显示空的 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 可以。因此,您需要根据需要使用它的位置来确定最适合您的方法。
这个 post 比我解释得更好; http://dotnetfacts.blogspot.de/2009/01/identifying-run-time-and-design-mode.html