Winforms禁用数据预览

时间:2018-02-28 11:09:48

标签: c# winforms user-controls system.reflection

我正在尝试为我的组合框生成一个列表。 这是在加载usercontrol时完成的。但是因为我根据哪些类实现某个接口来生成这个列表,所以表单的预览崩溃了。所以这个usercontrol在表单内部,表单试图“加载”usercontrol,找不到数据并抛出错误。我想禁用数据预览,只显示空的usercontrol

我该怎么做?

错误的屏幕截图:

Screenshot of the error

使表单崩溃的代码片段:

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;

表单显示了这一点,应该在这里显示usercontrol Error thrown by

1 个答案:

答案 0 :(得分:1)

所以听起来你需要区分设计模式和运行时模式。

有一些事情可以帮助你,你需要选择哪一个最适合你;

  • DesignMode属性
  • LicenseModeUsage property

工作方式不同,例如DesignMode在构造函数中不起作用,但LicenseMode不起作用。因此,您需要确定最适合您的方法,具体取决于您需要使用的位置。

这篇文章解释得比我好得多; http://dotnetfacts.blogspot.de/2009/01/identifying-run-time-and-design-mode.html