IDesignerEventService インターフェイスとは? わかりやすく解説

Weblio 辞書 > コンピュータ > .NET Framework クラス ライブラリ リファレンス > IDesignerEventService インターフェイスの意味・解説 

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 デリゲート



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

辞書ショートカット

すべての辞書の索引

「IDesignerEventService インターフェイス」の関連用語

IDesignerEventService インターフェイスのお隣キーワード
検索ランキング

   

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



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

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

©2025 GRAS Group, Inc.RSS