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 ステートメントを追加した後、コンポーネントがデザイナー経由でフォームに追加されたときに、メッセージ ボックスが表示されなくなりました。