ToolboxItemFilterAttribute Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Задает строку фильтра и тип фильтра для использования в качестве элемента панели инструментов.
public ref class ToolboxItemFilterAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class, AllowMultiple=true, Inherited=true)]
public sealed class ToolboxItemFilterAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Class, AllowMultiple=true, Inherited=true)]
[System.Serializable]
public sealed class ToolboxItemFilterAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Class, AllowMultiple=true, Inherited=true)>]
type ToolboxItemFilterAttribute = class
inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Class, AllowMultiple=true, Inherited=true)>]
[<System.Serializable>]
type ToolboxItemFilterAttribute = class
inherit Attribute
Public NotInheritable Class ToolboxItemFilterAttribute
Inherits Attribute
- Наследование
- Атрибуты
Примеры
В следующем примере кода показано, как применить ToolboxItemFilterAttribute.
#using <System.Drawing.dll>
#using <System.dll>
#using <System.Design.dll>
#using <System.Windows.Forms.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::Drawing::Design;
using namespace System::Windows::Forms;
using namespace System::Windows::Forms::Design;
// This example contains an IRootDesigner that implements the IToolboxUser interface.
// This example demonstrates how to enable the GetToolSupported method of an IToolboxUser
// designer in order to disable specific toolbox items, and how to respond to the
// invocation of a ToolboxItem in the ToolPicked method of an IToolboxUser implementation.
public ref class SampleRootDesigner;
// The following attribute associates the SampleRootDesigner with this example component.
[DesignerAttribute(__typeof(SampleRootDesigner),__typeof(IRootDesigner))]
public ref class RootDesignedComponent: public Control{};
// This example component class demonstrates the associated IRootDesigner which
// implements the IToolboxUser interface. When designer view is invoked, Visual
// Studio .NET attempts to display a design mode view for the class at the top
// of a code file. This can sometimes fail when the class is one of multiple types
// in a code file, and has a DesignerAttribute associating it with an IRootDesigner.
// Placing a derived class at the top of the code file solves this problem. A
// derived class is not typically needed for this reason, except that placing the
// RootDesignedComponent class in another file is not a simple solution for a code
// example that is packaged in one segment of code.
public ref class RootViewSampleComponent: public RootDesignedComponent{};
// This example IRootDesigner implements the IToolboxUser interface and provides a
// Windows Forms view technology view for its associated component using an internal
// Control type.
// The following ToolboxItemFilterAttribute enables the GetToolSupported method of this
// IToolboxUser designer to be queried to check for whether to enable or disable all
// ToolboxItems which create any components whose type name begins with "System.Windows.Forms".
[ToolboxItemFilterAttribute(S"System.Windows.Forms",ToolboxItemFilterType::Custom)]
public ref class SampleRootDesigner: public ParentControlDesigner, public IRootDesigner, public IToolboxUser
{
public private:
ref class RootDesignerView;
private:
// This field is a custom Control type named RootDesignerView. This field references
// a control that is shown in the design mode document window.
RootDesignerView^ view;
// This string array contains type names of components that should not be added to
// the component managed by this designer from the Toolbox. Any ToolboxItems whose
// type name matches a type name in this array will be marked disabled according to
// the signal returned by the IToolboxUser.GetToolSupported method of this designer.
array<String^>^blockedTypeNames;
public:
SampleRootDesigner()
{
array<String^>^tempTypeNames = {"System.Windows.Forms.ListBox","System.Windows.Forms.GroupBox"};
blockedTypeNames = tempTypeNames;
}
private:
property array<ViewTechnology>^ SupportedTechnologies
{
// IRootDesigner.SupportedTechnologies is a required override for an IRootDesigner.
// This designer provides a display using the Windows Forms view technology.
array<ViewTechnology>^ IRootDesigner::get()
{
ViewTechnology temp0[] = {ViewTechnology::WindowsForms};
return temp0;
}
}
// This method returns an object that provides the view for this root designer.
Object^ IRootDesigner::GetView( ViewTechnology technology )
{
// If the design environment requests a view technology other than Windows
// Forms, this method throws an Argument Exception.
if ( technology != ViewTechnology::WindowsForms )
throw gcnew ArgumentException( "An unsupported view technology was requested","Unsupported view technology." );
// Creates the view object if it has not yet been initialized.
if ( view == nullptr )
view = gcnew RootDesignerView( this );
return view;
}
// This method can signal whether to enable or disable the specified
// ToolboxItem when the component associated with this designer is selected.
bool IToolboxUser::GetToolSupported( ToolboxItem^ tool )
{
// Search the blocked type names array for the type name of the tool
// for which support for is being tested. Return false to indicate the
// tool should be disabled when the associated component is selected.
for ( int i = 0; i < blockedTypeNames->Length; i++ )
if ( tool->TypeName == blockedTypeNames[ i ] )
return false;
// Return true to indicate support for the tool, if the type name of the
// tool is not located in the blockedTypeNames string array.
return true;
}
// This method can perform behavior when the specified tool has been invoked.
// Invocation of a ToolboxItem typically creates a component or components,
// and adds any created components to the associated component.
void IToolboxUser::ToolPicked( ToolboxItem^ /*tool*/ ){}
public private:
// This control provides a Windows Forms view technology view object that
// provides a display for the SampleRootDesigner.
[DesignerAttribute(__typeof(ParentControlDesigner),__typeof(IDesigner))]
ref class RootDesignerView: public Control
{
private:
// This field stores a reference to a designer.
IDesigner^ m_designer;
public:
RootDesignerView( IDesigner^ designer )
{
// Perform basic control initialization.
m_designer = designer;
BackColor = Color::Blue;
Font = gcnew System::Drawing::Font( Font->FontFamily->Name,24.0f );
}
protected:
// This method is called to draw the view for the SampleRootDesigner.
void OnPaint( PaintEventArgs^ pe )
{
Control::OnPaint( pe );
// Draw the name of the component in large letters.
pe->Graphics->DrawString( m_designer->Component->Site->Name, Font, Brushes::Yellow, ClientRectangle );
}
};
};
using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Drawing;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Windows.Forms.Design;
// This example contains an IRootDesigner that implements the IToolboxUser interface.
// This example demonstrates how to enable the GetToolSupported method of an IToolboxUser
// designer in order to disable specific toolbox items, and how to respond to the
// invocation of a ToolboxItem in the ToolPicked method of an IToolboxUser implementation.
namespace IToolboxUserExample
{
// This example component class demonstrates the associated IRootDesigner which
// implements the IToolboxUser interface. When designer view is invoked, Visual
// Studio .NET attempts to display a design mode view for the class at the top
// of a code file. This can sometimes fail when the class is one of multiple types
// in a code file, and has a DesignerAttribute associating it with an IRootDesigner.
// Placing a derived class at the top of the code file solves this problem. A
// derived class is not typically needed for this reason, except that placing the
// RootDesignedComponent class in another file is not a simple solution for a code
// example that is packaged in one segment of code.
public class RootViewSampleComponent : RootDesignedComponent
{
}
// The following attribute associates the SampleRootDesigner with this example component.
[DesignerAttribute(typeof(SampleRootDesigner), typeof(IRootDesigner))]
public class RootDesignedComponent : System.Windows.Forms.Control
{
}
// This example IRootDesigner implements the IToolboxUser interface and provides a
// Windows Forms view technology view for its associated component using an internal
// Control type.
// The following ToolboxItemFilterAttribute enables the GetToolSupported method of this
// IToolboxUser designer to be queried to check for whether to enable or disable all
// ToolboxItems which create any components whose type name begins with "System.Windows.Forms".
[ToolboxItemFilterAttribute("System.Windows.Forms", ToolboxItemFilterType.Custom)]
public class SampleRootDesigner : ParentControlDesigner, IRootDesigner, IToolboxUser
{
// This field is a custom Control type named RootDesignerView. This field references
// a control that is shown in the design mode document window.
private RootDesignerView view;
// This string array contains type names of components that should not be added to
// the component managed by this designer from the Toolbox. Any ToolboxItems whose
// type name matches a type name in this array will be marked disabled according to
// the signal returned by the IToolboxUser.GetToolSupported method of this designer.
private string[] blockedTypeNames =
{
"System.Windows.Forms.ListBox",
"System.Windows.Forms.GroupBox"
};
// IRootDesigner.SupportedTechnologies is a required override for an IRootDesigner.
// This designer provides a display using the Windows Forms view technology.
ViewTechnology[] IRootDesigner.SupportedTechnologies
{
get { return new ViewTechnology[] {ViewTechnology.Default}; }
}
// This method returns an object that provides the view for this root designer.
object IRootDesigner.GetView(ViewTechnology technology)
{
// If the design environment requests a view technology other than Windows
// Forms, this method throws an Argument Exception.
if (technology != ViewTechnology.Default)
throw new ArgumentException("An unsupported view technology was requested",
"Unsupported view technology.");
// Creates the view object if it has not yet been initialized.
if (view == null)
view = new RootDesignerView(this);
return view;
}
// This method can signal whether to enable or disable the specified
// ToolboxItem when the component associated with this designer is selected.
bool IToolboxUser.GetToolSupported(ToolboxItem tool)
{
// Search the blocked type names array for the type name of the tool
// for which support for is being tested. Return false to indicate the
// tool should be disabled when the associated component is selected.
for( int i=0; i<blockedTypeNames.Length; i++ )
if( tool.TypeName == blockedTypeNames[i] )
return false;
// Return true to indicate support for the tool, if the type name of the
// tool is not located in the blockedTypeNames string array.
return true;
}
// This method can perform behavior when the specified tool has been invoked.
// Invocation of a ToolboxItem typically creates a component or components,
// and adds any created components to the associated component.
void IToolboxUser.ToolPicked(ToolboxItem tool)
{
}
// This control provides a Windows Forms view technology view object that
// provides a display for the SampleRootDesigner.
[DesignerAttribute(typeof(ParentControlDesigner), typeof(IDesigner))]
internal class RootDesignerView : Control
{
// This field stores a reference to a designer.
private IDesigner m_designer;
public RootDesignerView(IDesigner designer)
{
// Perform basic control initialization.
m_designer = designer;
BackColor = Color.Blue;
Font = new Font(Font.FontFamily.Name, 24.0f);
}
// This method is called to draw the view for the SampleRootDesigner.
protected override void OnPaint(PaintEventArgs pe)
{
base.OnPaint(pe);
// Draw 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.Drawing.Design
Imports System.Windows.Forms
Imports System.Windows.Forms.Design
' This example contains an IRootDesigner that implements the IToolboxUser interface.
' This example demonstrates how to enable the GetToolSupported method of an IToolboxUser
' designer in order to disable specific toolbox items, and how to respond to the
' invocation of a ToolboxItem in the ToolPicked method of an IToolboxUser implementation.
' This example component class demonstrates the associated IRootDesigner which
' implements the IToolboxUser interface. When designer view is invoked, Visual
' Studio .NET attempts to display a design mode view for the class at the top
' of a code file. This can sometimes fail when the class is one of multiple types
' in a code file, and has a DesignerAttribute associating it with an IRootDesigner.
' Placing a derived class at the top of the code file solves this problem. A
' derived class is not typically needed for this reason, except that placing the
' RootDesignedComponent class in another file is not a simple solution for a code
' example that is packaged in one segment of code.
Public Class RootViewSampleComponent
Inherits RootDesignedComponent
End Class
' The following attribute associates the SampleRootDesigner with this example component.
<DesignerAttribute(GetType(SampleRootDesigner), GetType(IRootDesigner))> _
Public Class RootDesignedComponent
Inherits System.Windows.Forms.Control
End Class
' This example IRootDesigner implements the IToolboxUser interface and provides a
' Windows Forms view technology view for its associated component using an internal
' Control type.
' The following ToolboxItemFilterAttribute enables the GetToolSupported method of this
' IToolboxUser designer to be queried to check for whether to enable or disable all
' ToolboxItems which create any components whose type name begins with "System.Windows.Forms".
<ToolboxItemFilterAttribute("System.Windows.Forms", ToolboxItemFilterType.Custom)> _
<System.Security.Permissions.PermissionSetAttribute(System.Security.Permissions.SecurityAction.Demand, Name:="FullTrust")> _
Public Class SampleRootDesigner
Inherits ParentControlDesigner
Implements IRootDesigner, IToolboxUser
' Member field of custom type RootDesignerView, a control that is shown in the
' design mode document window. This member is cached to reduce processing needed
' to recreate the view control on each call to GetView().
Private m_view As RootDesignerView
' This string array contains type names of components that should not be added to
' the component managed by this designer from the Toolbox. Any ToolboxItems whose
' type name matches a type name in this array will be marked disabled according to
' the signal returned by the IToolboxUser.GetToolSupported method of this designer.
Private blockedTypeNames As String() = {"System.Windows.Forms.ListBox", "System.Windows.Forms.GroupBox"}
' IRootDesigner.SupportedTechnologies is a required override for an IRootDesigner.
' This designer provides a display using the Windows Forms view technology.
ReadOnly Property SupportedTechnologies() As ViewTechnology() Implements IRootDesigner.SupportedTechnologies
Get
Return New ViewTechnology() {ViewTechnology.Default}
End Get
End Property
' This method returns an object that provides the view for this root designer.
Function GetView(ByVal technology As ViewTechnology) As Object Implements IRootDesigner.GetView
' If the design environment requests a view technology other than Windows
' Forms, this method throws an Argument Exception.
If technology <> ViewTechnology.Default Then
Throw New ArgumentException("An unsupported view technology was requested", "Unsupported view technology.")
End If
' Creates the view object if it has not yet been initialized.
If m_view Is Nothing Then
m_view = New RootDesignerView(Me)
End If
Return m_view
End Function
' This method can signal whether to enable or disable the specified
' ToolboxItem when the component associated with this designer is selected.
Function GetToolSupported(ByVal tool As ToolboxItem) As Boolean Implements IToolboxUser.GetToolSupported
' Search the blocked type names array for the type name of the tool
' for which support for is being tested. Return false to indicate the
' tool should be disabled when the associated component is selected.
Dim i As Integer
For i = 0 To blockedTypeNames.Length - 1
If tool.TypeName = blockedTypeNames(i) Then
Return False
End If
Next i ' Return true to indicate support for the tool, if the type name of the
' tool is not located in the blockedTypeNames string array.
Return True
End Function
' This method can perform behavior when the specified tool has been invoked.
' Invocation of a ToolboxItem typically creates a component or components,
' and adds any created components to the associated component.
Sub ToolPicked(ByVal tool As ToolboxItem) Implements IToolboxUser.ToolPicked
End Sub
' This control provides a Windows Forms view technology view object that
' provides a display for the SampleRootDesigner.
<DesignerAttribute(GetType(ParentControlDesigner), GetType(IDesigner))> _
Friend Class RootDesignerView
Inherits Control
' This field stores a reference to a designer.
Private m_designer As IDesigner
Public Sub New(ByVal designer As IDesigner)
' Performs basic control initialization.
m_designer = designer
BackColor = Color.Blue
Font = New Font(Font.FontFamily.Name, 24.0F)
End Sub
' This method is called to draw the view for the SampleRootDesigner.
Protected Overrides Sub OnPaint(ByVal pe As PaintEventArgs)
MyBase.OnPaint(pe)
' Draws the name of the component in large letters.
pe.Graphics.DrawString(m_designer.Component.Site.Name, Font, Brushes.Yellow, New RectangleF(ClientRectangle.X, ClientRectangle.Y, ClientRectangle.Width, ClientRectangle.Height))
End Sub
End Class
End Class
Комментарии
ToolboxItemFilterAttribute предоставляет механизм, с помощью которого элементы панели элементов можно помечать для использования только с конструкторами, имеющими соответствующий атрибут или код, определяющий, следует ли включать или отключать элемент на панели элементов.
Можно ToolboxItemFilterAttribute применить к ToolboxItem , чтобы указать строку фильтра и тип фильтра, указывающие, когда следует включать или отключать элемент. ToolboxItemFilterAttribute можно также применить к конструктору, чтобы указать его требования к включению элементов на панели элементов. Этот тип атрибута можно использовать, чтобы указать, что элемент панели элементов можно включить только при использовании конструктора с соответствующей строкой фильтра. Тип фильтра указывается в свойстве FilterType с помощью ToolboxItemFilterType , указывающего, используется ли и как используется строка фильтра, а также следует ли использовать пользовательский код для определения того, следует ли включить элемент.
Конструкторы
ToolboxItemFilterAttribute(String) |
Инициализирует новый экземпляр класса ToolboxItemFilterAttribute, используя заданную строку фильтра. |
ToolboxItemFilterAttribute(String, ToolboxItemFilterType) |
Инициализирует новый экземпляр класса ToolboxItemFilterAttribute, используя заданные строку фильтра и тип фильтра. |
Свойства
FilterString |
Возвращает строку фильтра для элемента панели инструментов. |
FilterType |
Возвращает тип фильтра. |
TypeId |
Возвращает идентификатор типа для этого атрибута. |
Методы
Equals(Object) |
Возвращает значение, показывающее, равен ли экземпляр указанному объекту. |
GetHashCode() |
Возвращает хэш-код данного экземпляра. |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
IsDefaultAttribute() |
При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса. (Унаследовано от Attribute) |
Match(Object) |
Показывает, содержит ли заданный объект соответствующую строку фильтра. |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
ToString() |
Возвращает строку, представляющую текущий объект. |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Явные реализации интерфейса
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации. (Унаследовано от Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Возвращает сведения о типе объекта, которые можно использовать для получения сведений о типе интерфейса. (Унаследовано от Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1). (Унаследовано от Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Предоставляет доступ к открытым свойствам и методам объекта. (Унаследовано от Attribute) |