IDesignerEventServiceとは? わかりやすく解説

IDesignerEventService イベント


パブリック イベントパブリック イベント

  名前 説明
パブリック イベント ActiveDesignerChanged 現在のルート デザイナ変更されたときに発生します
パブリック イベント DesignerCreated ルート デザイナ作成されたときに発生します
パブリック イベント DesignerDisposed ドキュメントルート デザイナ破棄されるときに発生します
パブリック イベント SelectionChanged 現在のデザイン ビュー選択されている内容変更されたときに発生します
参照参照

関連項目

IDesignerEventService インターフェイス
System.ComponentModel.Design 名前空間
DesignerEventHandler デリゲート

IDesignerEventService インターフェイス

ルート デザイナ追加および削除されたとき、選択したコンポーネント変更されたとき、および現在のルート デザイナ変更されたときにイベント通知提供します

名前空間: System.ComponentModel.Design
アセンブリ: System (system.dll 内)
構文構文

Public Interface IDesignerEventService
Dim instance As IDesignerEventService
public interface IDesignerEventService
public interface class IDesignerEventService
public interface IDesignerEventService
public interface IDesignerEventService
解説解説
使用例使用例

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();
      }
   };
}
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
IDesignerEventService メンバ
System.ComponentModel.Design 名前空間
DesignerEventHandler デリゲート

IDesignerEventService プロパティ


IDesignerEventService メンバ




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「IDesignerEventService」の関連用語

IDesignerEventServiceのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



IDesignerEventServiceのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2025 Microsoft.All rights reserved.

©2025 GRAS Group, Inc.RSS