在使用.net Winform Designer时,如何处理UserControls构造函数中的异常?

时间:2009-01-26 15:55:25

标签: .net visual-studio winforms windows-forms-designer

在WinForm设计器中加载UserControl时,VisualStudio将执行控件的InitializeComponent()方法,但不执行其构造函数。 这确实有所不同,因为在构造函数中有一些代码无法在设计时运行,这是很常见的。

不幸的是,当你将UserControl添加到另一个控件时,VisualStudio运行父控件的InitializeComponent()方法,该方法调用子控件的构造函数,如果你在这些构造函数中有异常,那么你就是stucked。

你如何处理这个问题?

4 个答案:

答案 0 :(得分:2)

使用以下内容仅包含运行时部分:

If Not me.DesignMode Then
  'Runtime only here
End If

答案 1 :(得分:1)

我发现a solution in CodeProject对我有用:

if (System.ComponentModel.LicenseManager.UsageMode != 
    System.ComponentModel.LicenseUsageMode.Designtime)
{
    // Runtime only here
}

答案 2 :(得分:0)

我正在使用的解决方法是将我的运行时初始化代码放在InitializeRuntime()方法中,我从顶层构造函数中递归调用。 这解决了这个问题,但我总是要记住为我添加的每个UserControl添加对InitializeRuntime()的调用,而不是仅仅使用设计器拖放组件。

答案 3 :(得分:0)

为什么不在这种情况下使用OnLoadEvent?