IRootDesigner 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供对根级设计器视图技术的支持。
public interface class IRootDesigner : IDisposable, System::ComponentModel::Design::IDesigner
public interface class IRootDesigner : System::ComponentModel::Design::IDesigner
public interface IRootDesigner : IDisposable, System.ComponentModel.Design.IDesigner
[System.Runtime.InteropServices.ComVisible(true)]
public interface IRootDesigner : IDisposable, System.ComponentModel.Design.IDesigner
public interface IRootDesigner : System.ComponentModel.Design.IDesigner
type IRootDesigner = interface
interface IDesigner
interface IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type IRootDesigner = interface
interface IDesigner
interface IDisposable
Public Interface IRootDesigner
Implements IDesigner, IDisposable
Public Interface IRootDesigner
Implements IDesigner
- 派生
- 属性
- 实现
示例
下面的代码示例演示了与 IRootDesigner 示例用户控件关联的实现。 此 IRootDesigner 实现通过重写 方法在设计器视图中显示后台视图的 GetView 控件。 需要添加对 System.Design 程序集的引用才能编译示例。
若要使用此示例,请将源代码添加到项目,并在设计器视图中显示 RootViewSampleComponent
以显示自定义的根设计器视图。
#using <System.Windows.Forms.dll>
#using <System.Drawing.dll>
#using <System.Design.dll>
#using <System.dll>
using namespace System;
using namespace System::Collections;
using namespace System::ComponentModel;
using namespace System::ComponentModel::Design;
using namespace System::Diagnostics;
using namespace System::Drawing;
using namespace System::Windows::Forms;
using namespace System::Windows::Forms::Design;
namespace SampleRootDesigner
{
ref class SampleRootDesigner;
// This sample demonstrates how to provide the root designer view, or
// design mode background view, by overriding IRootDesigner.GetView().
// The following attribute associates the SampleRootDesigner designer
// with the SampleComponent component.
[Designer(SampleRootDesigner::typeid,IRootDesigner::typeid)]
public ref class RootDesignedComponent: public Component
{
public:
RootDesignedComponent(){}
};
public ref class SampleRootDesigner: public ComponentDesigner, public IRootDesigner
{
private:
ref class RootDesignerView;
// Member field of custom type RootDesignerView, a control that
// will be shown in the Forms designer view. This member is
// cached to reduce processing needed to recreate the
// view control on each call to GetView().
RootDesignerView^ m_view;
// This method returns an instance of the view for this root
// designer. The "view" is the user interface that is presented
// in a document window for the user to manipulate.
virtual Object^ GetView( ViewTechnology technology ) sealed = IRootDesigner::GetView
{
if ( technology != ViewTechnology::WindowsForms )
{
throw gcnew ArgumentException( "Not a supported view technology","technology" );
}
if ( m_view == nullptr )
{
// Some type of displayable Form or control is required
// for a root designer that overrides GetView(). In this
// example, a Control of type RootDesignerView is used.
// Any class that inherits from Control will work.
m_view = gcnew RootDesignerView( this );
}
return m_view;
}
// IRootDesigner.SupportedTechnologies is a required override for an
// IRootDesigner. WindowsForms is the view technology used by this designer.
public:
property array<ViewTechnology>^ SupportedTechnologies
{
virtual array<ViewTechnology>^ get()
{
return gcnew array<ViewTechnology> {ViewTechnology::Default};
}
}
// RootDesignerView is a simple control that will be displayed
// in the designer window.
ref class RootDesignerView: public Control
{
private:
SampleRootDesigner^ m_designer;
public:
RootDesignerView( SampleRootDesigner^ designer )
{
m_designer = designer;
BackColor = Color::Blue;
Font = gcnew System::Drawing::Font( Font->FontFamily->Name,24.0f );
}
protected:
virtual void OnPaint( PaintEventArgs^ pe ) override
{
Control::OnPaint( pe );
// Draws the name of the component in large letters.
pe->Graphics->DrawString( m_designer->Component->Site->Name, Font, Brushes::Yellow, ClientRectangle );
}
};
};
// This sample component inherits from RootDesignedComponent which
// uses the SampleRootDesigner.
public ref class RootViewSampleComponent: public RootDesignedComponent
{
public:
RootViewSampleComponent(){}
};
}
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Design;
namespace SampleRootDesigner
{
// This sample demonstrates how to provide the root designer view, or
// design mode background view, by overriding IRootDesigner.GetView().
// This sample component inherits from RootDesignedComponent which
// uses the SampleRootDesigner.
public class RootViewSampleComponent : RootDesignedComponent
{
public RootViewSampleComponent()
{
}
}
// The following attribute associates the SampleRootDesigner designer
// with the SampleComponent component.
[Designer(typeof(SampleRootDesigner), typeof(IRootDesigner))]
public class RootDesignedComponent : Component
{
public RootDesignedComponent()
{
}
}
public class SampleRootDesigner : ComponentDesigner, IRootDesigner
{
// Member field of custom type RootDesignerView, a control that
// will be shown in the Forms designer view. This member is
// cached to reduce processing needed to recreate the
// view control on each call to GetView().
private RootDesignerView m_view;
// This method returns an instance of the view for this root
// designer. The "view" is the user interface that is presented
// in a document window for the user to manipulate.
object IRootDesigner.GetView(ViewTechnology technology)
{
if (technology != ViewTechnology.Default)
{
throw new ArgumentException("Not a supported view technology", "technology");
}
if (m_view == null)
{
// Some type of displayable Form or control is required
// for a root designer that overrides GetView(). In this
// example, a Control of type RootDesignerView is used.
// Any class that inherits from Control will work.
m_view = new RootDesignerView(this);
}
return m_view;
}
// IRootDesigner.SupportedTechnologies is a required override for an
// IRootDesigner. Default is the view technology used by this designer.
ViewTechnology[] IRootDesigner.SupportedTechnologies
{
get
{
return new ViewTechnology[] {ViewTechnology.Default};
}
}
// RootDesignerView is a simple control that will be displayed
// in the designer window.
private class RootDesignerView : Control
{
private SampleRootDesigner m_designer;
public RootDesignerView(SampleRootDesigner designer)
{
m_designer = designer;
BackColor = Color.Blue;
Font = new Font(Font.FontFamily.Name, 24.0f);
}
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
// Draws the name of the component in large letters.
pe.Graphics.DrawString(m_designer.Component.Site.Name, Font, Brushes.Yellow, ClientRectangle);
}
}
}
}
Imports System.Collections
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Diagnostics
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Windows.Forms.Design
Namespace SampleRootDesigner
' This sample demonstrates how to provide the root designer view, or
' design mode background view, by overriding IRootDesigner.GetView().
' This sample component inherits from RootDesignedComponent which
' uses the SampleRootDesigner.
Public Class RootViewSampleComponent
Inherits RootDesignedComponent
Public Sub New()
End Sub
End Class
' The following attribute associates the SampleRootDesigner designer
' with the SampleComponent component.
<Designer(GetType(SampleRootDesigner), GetType(IRootDesigner))> _
Public Class RootDesignedComponent
Inherits Component
Public Sub New()
End Sub
End Class
Public Class SampleRootDesigner
Inherits ComponentDesigner
Implements IRootDesigner
' Member field of custom type RootDesignerView, a control that
' will be shown in the Forms designer view. This member is
' cached to reduce processing needed to recreate the
' view control on each call to GetView().
Private m_view As RootDesignerView
' This method returns an instance of the view for this root
' designer. The "view" is the user interface that is presented
' in a document window for the user to manipulate.
Function GetView(ByVal technology As ViewTechnology) As Object Implements IRootDesigner.GetView
If Not technology = ViewTechnology.Default Then
Throw New ArgumentException("Not a supported view technology", "technology")
End If
If m_view Is Nothing Then
' Some type of displayable Form or control is required for a root designer that overrides
' GetView(). In this example, a Control of type RootDesignerView is used.
' Any class that inherits from Control will work.
m_view = New RootDesignerView(Me)
End If
Return m_view
End Function
' IRootDesigner.SupportedTechnologies is a required override for an
' IRootDesigner. Default is the view technology used by this designer.
ReadOnly Property SupportedTechnologies() As ViewTechnology() Implements IRootDesigner.SupportedTechnologies
Get
Return New ViewTechnology() {ViewTechnology.Default}
End Get
End Property
' RootDesignerView is a simple control that will be displayed
' in the designer window.
Private Class RootDesignerView
Inherits Control
Private m_designer As SampleRootDesigner
Public Sub New(ByVal designer As SampleRootDesigner)
m_designer = designer
BackColor = Color.Blue
Font = New Font(Font.FontFamily.Name, 24.0F)
End Sub
Protected Overrides Sub OnPaint(ByVal pe As PaintEventArgs)
MyBase.OnPaint(pe)
' Draws the name of the component in large letters.
Dim rf As New RectangleF(ClientRectangle.X, ClientRectangle.Y, ClientRectangle.Width, ClientRectangle.Height)
pe.Graphics.DrawString(m_designer.Component.Site.Name, Font, Brushes.Yellow, rf)
End Sub
End Class
End Class
End Namespace
注解
根设计器是位于当前设计时文档对象层次结构的顶部位置或根的设计器。 根设计器必须实现 IRootDesigner 接口。 根设计器通常在设计器视图模式下管理背景视图,并且通常显示当前设计时项目的基本容器中的控件。
属性
Component |
获取此设计器正在设计的基组件。 (继承自 IDesigner) |
SupportedTechnologies |
获取此设计器可为其显示提供支持的技术集。 |
Verbs |
获取设计器支持的设计时谓词的集合。 (继承自 IDesigner) |
方法
Dispose() |
执行与释放或重置非托管资源关联的应用程序定义的任务。 (继承自 IDisposable) |
DoDefaultAction() |
执行此设计器的默认行为。 (继承自 IDesigner) |
GetView(ViewTechnology) |
获取指定视图技术的视图对象。 |
Initialize(IComponent) |
用指定的组件初始化设计器。 (继承自 IDesigner) |