您可以檢查LicenseManager的UsageMode,檢查代碼是否在設計時。
System.ComponentModel.LicenseManager.UsageMode == System.ComponentModel.LicenseUsageMode.Designtime
下面是一個簡單的例子:
using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace Test
{
public class ComponentClass : Component
{
public ComponentClass()
{
MessageBox.Show("Runtime!");
}
}
}
當此組件獲得添加到您的窗體設計器中,您將馬上得到一個消息框。
爲了防止這種情況,你可以添加一個簡單的if語句來檢查代碼是不是在設計時
using System;
using System.ComponentModel;
using System.Windows.Forms;
namespace Test
{
public class ComponentClass : Component
{
public ComponentClass()
{
if (LicenseManager.UsageMode != LicenseUsageMode.Designtime)
{
MessageBox.Show("Runtime!");
}
}
}
}
添加if語句後,將組件添加到窗體的消息框不再出現通過設計師。
我希望這會有所幫助。
-jeremy
男人,你的「不那麼優雅」的方法是唯一可行的方法。 LicensManager.UsageMode不起作用,例如當設計者調用用戶控件的「屬性獲取」方法時。 – Soonts 2010-06-10 16:11:45