2015-11-07 72 views
-2

如果方法处于设计时或者只能在运行时执行,有没有办法阻止方法执行?使用属性阻止在设计时执行方法

我在创建自定义控件时遇到了这个问题,因为在构造函数中只会在运行时工作。

现在在设计时设计表单并使用该控件,则表单会生成错误。 现在我想这在用户控制

public ctrl_information() 
    { 
     InitializeComponent(); 
     if (LicenseManager.UsageMode == LicenseUsageMode.Designtime)) return; 
     SomeMethod(); 
     //Other code 
    } 

的构造现在我要达到什么样的是这样的。

[ExecuteOnlyAtRuntime] 
public void SomeMethod() 
{ 
    //Code here 
} 

然后像这样调用它。

public ctrl_information() 
    { 
     InitializeComponent(); 
     //if (LicenseManager.UsageMode == LicenseUsageMode.Designtime)) return; -- removing this line 
     SomeMethod(); 
    } 

这可能吗?

请大家澄清一下。

谢谢

+0

创建一个包含该类的第二构造参数(一个或多个)。传递LicenseManager.UsageMode或LicenseUsageMode.DesignTime作为参数。 – jdweng

+0

你在使用winform吗? – Kapoor

+0

是的,我使用winforms – zer09

回答

0

假设someMethod在控件中,您可以使用Component.DesignMode。

因此,一个简单的办法可以是

public void SomeMethod() 
    { 
     if (this.DesignMode == false) 
     { 
      //Code here 
     }   
    } 

柜面的一些功能不是在控制,你可以实现这样的事情 -

public void SomeFunciton() 
    { 
     if(VisualStudioUtility.IsRunningInVisualStudio == false) 
     { 

     } 
    } 



static class VisualStudioUtility 
{ 
    private const string IDE_EXE = "devenv.exe"; 

    public static bool IsRunningInVisualStudio 
    { 
     get 
     { 
      return Environment.CommandLine.Contains(IDE_EXE); 
     } 
    } 
} 
+0

是的,这是可以做到的,但问题是如果方法不在控制范围内 – zer09

+0

嗯好吧......我会为这种情况实施另一个例子。 – Kapoor

相关问题