IDesignerEventService イベント

名前 | 説明 | |
---|---|---|
![]() | ActiveDesignerChanged | 現在のルート デザイナが変更されたときに発生します。 |
![]() | DesignerCreated | ルート デザイナが作成されたときに発生します。 |
![]() | DesignerDisposed | ドキュメントのルート デザイナが破棄されるときに発生します。 |
![]() | SelectionChanged | 現在のデザイン ビューで選択されている内容が変更されたときに発生します。 |

IDesignerEventService インターフェイス
アセンブリ: System (system.dll 内)


IDesignerEventService は、新しいルート デザイナが作成、変更、または破棄されたときに通知を提供します。ルート デザイナは、デザイナ ビュー内のドキュメントの基本コンポーネントに対するデザイン時サポートを提供します。SelectionChanged イベントは、現在のコンポーネントの選択状態が変更されたときに通知を提供します。

IDesignerEventService を使用して、コントロール上にイベント通知を表示するデザイナの例を次に示します。この例を使用するには、コードをコンパイルしてクラス ライブラリを作成します。このライブラリへの参照を新しい Windows フォーム プロジェクトに追加し、ライブラリ内のコントロールをツールボックスに追加します。DesignerMonitor コントロールのインスタンスをデザイン モードでフォームに追加します。コントロールを右クリックし、[Start monitoring] コマンドをクリックして、IDesignerEventService によって発生するイベントの通知を表示します。
Imports System Imports System.Collections Imports System.ComponentModel Imports System.ComponentModel.Design Imports System.Drawing Imports System.Windows.Forms Imports System.Windows.Forms.Design Namespace DesignerEventServiceExample ' DesignerMonitor provides a display for designer event notifications. <Designer(GetType(DesignerMonitorDesigner))> _ Public Class DesignerMonitor Inherits System.Windows.Forms.UserControl ' List to contain strings that describe designer events. Public updates As ArrayList Public monitoring_events As Boolean = False Public Sub New() updates = New ArrayList() Me.BackColor = Color.Beige Me.Size = New Size(450, 300) End Sub ' Display the message for the current mode, and any event messages if monitoring events Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs) e.Graphics.DrawString("IDesignerEventService DesignerMonitor control", New Font(FontFamily.GenericMonospace, 10), New SolidBrush(Color.Red), 5, 4) Dim yoffset As Integer = 10 If Not monitoring_events Then yoffset += 10 e.Graphics.DrawString("Currently not monitoring designer events.", New Font(FontFamily.GenericMonospace, 10), New SolidBrush(Color.Black), 5, yoffset + 10) e.Graphics.DrawString("Use the shortcut menu commands", New Font(FontFamily.GenericMonospace, 10), New SolidBrush(Color.Black), 5, yoffset + 30) e.Graphics.DrawString("provided by an associated DesignerMonitorDesigner", New Font(FontFamily.GenericMonospace, 10), New SolidBrush(Color.Black), 5, yoffset + 40) e.Graphics.DrawString("to start or stop monitoring.", New Font(FontFamily.GenericMonospace, 10), New SolidBrush(Color.Black), 5, yoffset + 50) Else e.Graphics.DrawString("Currently monitoring designer events.", New Font(FontFamily.GenericMonospace, 10), New SolidBrush(Color.DarkBlue), 5, yoffset + 10) e.Graphics.DrawString("Designer created, changed and disposed events:", New Font(FontFamily.GenericMonospace, 9), New SolidBrush(Color.Brown), 5, yoffset + 35) Dim i As Integer For i = 0 To updates.Count - 1 e.Graphics.DrawString(CStr(updates(i)), New Font(FontFamily.GenericMonospace, 8), New SolidBrush(Color.Black), 5, yoffset + 55 + 10 * i) yoffset += 10 Next i End If End Sub End Class ' DesignerMonitorDesigner uses the IDesignerEventService to send event information ' to an associated DesignerMonitor control's updates collection. Public Class DesignerMonitorDesigner Inherits System.Windows.Forms.Design.ControlDesigner Private dm As DesignerMonitor = Nothing Private dvc As DesignerVerbCollection = Nothing Private eventcount As Integer = 0 Public Sub New() ' Initializes the designer's shortcut menu with a "Start monitoring" command. dvc = New DesignerVerbCollection(New DesignerVerb() {New DesignerVerb("Start monitoring", AddressOf Me.StartMonitoring)}) End Sub Public Overrides Sub Initialize(ByVal component As System.ComponentModel.IComponent) MyBase.Initialize(component) Dim o As Object o = component If Not o.GetType() Is GetType(DesignerMonitor) Then Throw New Exception("This designer requires a DesignerMonitor control.") End If dm = CType(component, DesignerMonitor) End Sub Public Overrides ReadOnly Property Verbs() As System.ComponentModel.Design.DesignerVerbCollection Get Return dvc End Get End Property Private Sub StopMonitoring(ByVal sender As Object, ByVal e As EventArgs) Dim des As IDesignerEventService = CType(Me.Control.Site.GetService(GetType(IDesignerEventService)), IDesignerEventService) If des Is Nothing Then Return End If ' Remove event handlers for event notification methods. RemoveHandler des.DesignerCreated, AddressOf Me.DesignerCreated RemoveHandler des.DesignerDisposed, AddressOf Me.DesignerDisposed RemoveHandler des.ActiveDesignerChanged, AddressOf Me.DesignerChanged RemoveHandler des.SelectionChanged, AddressOf Me.SelectionChanged dm.monitoring_events = False ' Rebuild menu with "Start monitoring" command. dvc = New DesignerVerbCollection(New DesignerVerb() {New DesignerVerb("Start monitoring", AddressOf Me.StartMonitoring)}) dm.Refresh() End Sub Private Sub StartMonitoring(ByVal sender As Object, ByVal e As EventArgs) Dim des As IDesignerEventService = CType(Me.Control.Site.GetService(GetType(IDesignerEventService)), IDesignerEventService) If des Is Nothing Then Return End If ' Add event handlers for event notification methods. AddHandler des.DesignerCreated, AddressOf Me.DesignerCreated AddHandler des.DesignerDisposed, AddressOf Me.DesignerDisposed AddHandler des.ActiveDesignerChanged, AddressOf Me.DesignerChanged AddHandler des.SelectionChanged, AddressOf Me.SelectionChanged dm.monitoring_events = True ' Rebuild menu with "Stop monitoring" command. dvc = New DesignerVerbCollection(New DesignerVerb() {New DesignerVerb("Stop monitoring", AddressOf Me.StopMonitoring)}) dm.Refresh() End Sub Private Sub DesignerCreated(ByVal sender As Object, ByVal e As DesignerEventArgs) UpdateStatus(("Designer for " + e.Designer.RootComponent.Site.Name + " was created.")) End Sub Private Sub DesignerDisposed(ByVal sender As Object, ByVal e As DesignerEventArgs) UpdateStatus(("Designer for " + e.Designer.RootComponent.Site.Name + " was disposed.")) End Sub Private Sub DesignerChanged(ByVal sender As Object, ByVal e As ActiveDesignerEventArgs) UpdateStatus(("Active designer moved from " + e.OldDesigner.RootComponent.Site.Name + " to " + e.NewDesigner.RootComponent.Site.Name + ".")) End Sub Private Sub SelectionChanged(ByVal sender As Object, ByVal e As EventArgs) UpdateStatus("A component selection was changed.") End Sub ' Update message buffer on DesignerMonitor control. Private Sub UpdateStatus(ByVal newmsg As String) If dm.updates.Count > 10 Then dm.updates.RemoveAt(10) End If dm.updates.Insert(0, "Event #" + eventcount.ToString() + ": " + newmsg) eventcount += 1 dm.Refresh() End Sub End Class End Namespace
#using <system.dll> #using <system.design.dll> #using <system.windows.forms.dll> #using <system.drawing.dll> using namespace System; using namespace System::ComponentModel; using namespace System::ComponentModel::Design; using namespace System::Collections; using namespace System::Drawing; using namespace System::Windows::Forms; using namespace System::Windows::Forms::Design; namespace DesignerEventServiceExample { ref class DesignerMonitorDesigner; // DesignerMonitor provides a display for designer event notifications. [Designer(DesignerEventServiceExample::DesignerMonitorDesigner::typeid)] public ref class DesignerMonitor: public UserControl { public: // List to contain strings that describe designer events. ArrayList^ updates; bool monitoring_events; DesignerMonitor() { monitoring_events = false; updates = gcnew ArrayList; this->BackColor = Color::White; this->Size = System::Drawing::Size( 450, 300 ); } protected: // Display the message for the current mode, and any event messages if event monitoring is active. virtual void OnPaint( PaintEventArgs^ e ) override { e->Graphics->DrawString( "IDesignerEventService DesignerMonitor Control", gcnew System::Drawing::Font( FontFamily::GenericMonospace,10 ), gcnew SolidBrush( Color::Blue ), 5, 4 ); int yoffset = 10; if ( !monitoring_events ) { yoffset += 10; e->Graphics->DrawString( "Currently not monitoring designer events.", gcnew System::Drawing::Font( FontFamily::GenericMonospace,10 ), gcnew SolidBrush( Color::Black ), 5.f, yoffset + 10.f ); e->Graphics->DrawString( "Use the shortcut menu commands", gcnew System::Drawing::Font( FontFamily::GenericMonospace,10 ), gcnew SolidBrush( Color::Black ), 5.f, yoffset + 30.f ); e->Graphics->DrawString( "provided by an associated DesignerMonitorDesigner", gcnew System::Drawing::Font( FontFamily::GenericMonospace,10 ), gcnew SolidBrush( Color::Black ), 5.f, yoffset + 40.f ); e->Graphics->DrawString( "to start or stop monitoring.", gcnew System::Drawing::Font( FontFamily::GenericMonospace,10 ), gcnew SolidBrush( Color::Black ), 5.f, yoffset + 50.f ); } else { e->Graphics->DrawString( "Currently monitoring designer events.", gcnew System::Drawing::Font( FontFamily::GenericMonospace,10 ), gcnew SolidBrush( Color::DarkBlue ), 5.f, yoffset + 10.f ); e->Graphics->DrawString( "Designer created, changed and disposed events:", gcnew System::Drawing::Font( FontFamily::GenericMonospace,9 ), gcnew SolidBrush( Color::Brown ), 5.f, yoffset + 35.f ); for ( int i = 0; i < updates->Count; i++ ) { e->Graphics->DrawString( static_cast<String^>(updates[ i ]), gcnew System::Drawing::Font( FontFamily::GenericMonospace,8 ), gcnew SolidBrush( Color::Black ), 5.f, yoffset + 55.f + (10 * i) ); yoffset += 10; } } } }; // DesignerMonitorDesigner uses the IDesignerEventService to send event information // to an associated DesignerMonitor control's updates collection. public ref class DesignerMonitorDesigner: public ControlDesigner { private: DesignerMonitor^ dm; DesignerVerbCollection^ dvc; int eventcount; void StopMonitoring( Object^ /*sender*/, EventArgs^ /*e*/ ) { IDesignerEventService^ des = dynamic_cast<IDesignerEventService^>(this->Control->Site->GetService( IDesignerEventService::typeid )); if ( des != nullptr ) { // Remove event handlers for event notification methods. des->DesignerCreated -= gcnew DesignerEventHandler( this, &DesignerMonitorDesigner::DesignerCreated ); des->DesignerDisposed -= gcnew DesignerEventHandler( this, &DesignerMonitorDesigner::DesignerDisposed ); des->ActiveDesignerChanged -= gcnew ActiveDesignerEventHandler( this, &DesignerMonitorDesigner::DesignerChanged ); des->SelectionChanged -= gcnew EventHandler( this, &DesignerMonitorDesigner::SelectionChanged ); dm->monitoring_events = false; // Rebuild menu with "Start monitoring" command. array<DesignerVerb^>^myArray = {gcnew DesignerVerb( "Start monitoring",gcnew EventHandler( this, &DesignerMonitorDesigner::StartMonitoring ) )}; dvc = gcnew DesignerVerbCollection( myArray ); dm->Refresh(); } } void StartMonitoring( Object^ /*sender*/, EventArgs^ /*e*/ ) { IDesignerEventService^ des = dynamic_cast<IDesignerEventService^>(this->Control->Site->GetService( IDesignerEventService::typeid )); if ( des != nullptr ) { // Add event handlers for event notification methods. des->DesignerCreated += gcnew DesignerEventHandler( this, &DesignerMonitorDesigner::DesignerCreated ); des->DesignerDisposed += gcnew DesignerEventHandler( this, &DesignerMonitorDesigner::DesignerDisposed ); des->ActiveDesignerChanged += gcnew ActiveDesignerEventHandler( this, &DesignerMonitorDesigner::DesignerChanged ); des->SelectionChanged += gcnew EventHandler( this, &DesignerMonitorDesigner::SelectionChanged ); dm->monitoring_events = false; // Rebuild menu with "Stop monitoring" command. array<DesignerVerb^>^myArray = {gcnew DesignerVerb( "Stop monitoring",gcnew EventHandler( this, &DesignerMonitorDesigner::StopMonitoring ) )}; dvc = gcnew DesignerVerbCollection( myArray ); dm->Refresh(); } } void DesignerCreated( Object^ /*sender*/, DesignerEventArgs^ e ) { UpdateStatus( "Designer for " + e->Designer->RootComponent->Site->Name + " was created." ); } void DesignerDisposed( Object^ /*sender*/, DesignerEventArgs^ e ) { UpdateStatus( "Designer for " + e->Designer->RootComponent->Site->Name + " was disposed." ); } void DesignerChanged( Object^ /*sender*/, ActiveDesignerEventArgs^ e ) { UpdateStatus( "Active designer moved from " + e->OldDesigner->RootComponent->Site->Name + " to " + e->NewDesigner->RootComponent->Site->Name + "." ); } void SelectionChanged( Object^ /*sender*/, EventArgs^ /*e*/ ) { UpdateStatus("A component selection was changed."); } // Update message buffer on DesignerMonitor control. void UpdateStatus( String^ newmsg ) { if ( dm->updates->Count > 10 ) dm->updates->RemoveAt( 10 ); dm->updates->Insert( 0, "Event #" + eventcount.ToString() + ": " + newmsg ); eventcount++; dm->Refresh(); } }; }

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


IDesignerEventService プロパティ

名前 | 説明 | |
---|---|---|
![]() | ActiveDesigner | 現在アクティブなドキュメントのルート デザイナを取得します。 |
![]() | Designers | 開発環境で現在アクティブなデザイン ドキュメントのルート デザイナのコレクションを取得します。 |

IDesignerEventService メンバ
ルート デザイナが追加および削除されたとき、選択したコンポーネントが変更されたとき、および現在のルート デザイナが変更されたときにイベント通知を提供します。
IDesignerEventService データ型で公開されるメンバを以下の表に示します。

名前 | 説明 | |
---|---|---|
![]() | ActiveDesigner | 現在アクティブなドキュメントのルート デザイナを取得します。 |
![]() | Designers | 開発環境で現在アクティブなデザイン ドキュメントのルート デザイナのコレクションを取得します。 |

名前 | 説明 | |
---|---|---|
![]() | ActiveDesignerChanged | 現在のルート デザイナが変更されたときに発生します。 |
![]() | DesignerCreated | ルート デザイナが作成されたときに発生します。 |
![]() | DesignerDisposed | ドキュメントのルート デザイナが破棄されるときに発生します。 |
![]() | SelectionChanged | 現在のデザイン ビューで選択されている内容が変更されたときに発生します。 |

- IDesignerEventServiceのページへのリンク