Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / CompMod / System / ComponentModel / ToolboxItemFilterAttribute.cs / 1 / ToolboxItemFilterAttribute.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.ComponentModel { using System; using System.Diagnostics; using System.Security.Permissions; ////// This attribute allows you to configure a filter that is used enable or disable toolbox items /// from being used on particular designers. For example, you may have a class of components /// that can only be used on a certain type of designer. You can configure a toolbox item /// filter to enforce that rule. For example, take a report designer that uses a component /// base class of ReportElement. You may want to make ReportElement toolbox items enabled only /// when a ReportDesigner is the active designer. To do this, you would add the following /// ToolboxItemFilter attributes to each class: /// /// [ToolboxItemFilter("MyReportFilterString", ToolboxItemFilterType.Require)] /// public class ReportElement : Component {} /// /// [ToolboxItemFilter("MyReportFilterString", ToolboxItemFilterType.Require)] /// public class ReportDesigner : Component {} /// /// These two filters specify that ReportElement toolbox items will only be /// enabled when a ReportDesigner is visible. By specifying a filter type of /// Require on the report designer class, this will disable any toolbox items /// that are not report elements. If the report designer specifed a filter type /// of "Allow" instead of "Require", other components would be enabled when the /// report designer was active. ReportElements would still be disabled when /// other designers were active, however, because ReportElement requires designers /// to have the given filter string. /// /// Toolbox item filtering is a useful way to restrict toolbox item visibility to /// cases where it is appropriate. This can help to avoid confusion for users, but /// you should use caution not to make items unusually restrictive. If you have a /// general purpose component, for example, you should allow the component to appear /// on any designer. /// /// The ASP.NET and Windows Forms designers both use filter attributes to prevent /// each other's components from being enabled. This is a useful restriction because, /// since each has several duplicate class names, it may be confusing to users and /// they may not know which controls to choose. /// /// [ AttributeUsage(AttributeTargets.Class, AllowMultiple=true, Inherited=true), Serializable ] public sealed class ToolboxItemFilterAttribute : Attribute { private ToolboxItemFilterType filterType; private string filterString; private string typeId; ////// Initializes a new ToolboxItemFilterAttribute with the provide filter string and a filter type of /// "Allow". /// public ToolboxItemFilterAttribute(string filterString) : this(filterString, ToolboxItemFilterType.Allow) { } ////// Initializes a new ToolboxItemFilterAttribute with the provide filter string and filter type. /// public ToolboxItemFilterAttribute(string filterString, ToolboxItemFilterType filterType) { if (filterString == null) filterString = String.Empty; this.filterString = filterString; this.filterType = filterType; } ////// Retrieves the filter string for this attribute. The filter string is a user-defined string that /// is used to identify matching attributes. /// public string FilterString { get { return filterString; } } ////// Retrieves the filter type for this attribute. The filter type determines how the filter string should /// be applied. /// public ToolboxItemFilterType FilterType { get { return filterType; } } ////// The unique identifier for this attribute. All ToolboxItemFilterAttributes with the same filter string /// are considered the same, so they return the same TypeId. /// public override object TypeId { get { if (typeId == null) { typeId = GetType().FullName + filterString; } return typeId; } } public override bool Equals(object obj) { if (obj == this) { return true; } ToolboxItemFilterAttribute other = obj as ToolboxItemFilterAttribute; return (other != null && other.FilterType.Equals(FilterType) && other.FilterString.Equals(FilterString)); } public override int GetHashCode() { // No need to hash on filter type as well; there shouldn't be that many duplicates. return filterString.GetHashCode(); } public override bool Match(object obj) { ToolboxItemFilterAttribute other = obj as ToolboxItemFilterAttribute; if (other == null) { return false; } // different filter string kills a match immediately. // if (!other.FilterString.Equals(FilterString)) { return false; } return true; } public override string ToString() { return filterString + "," + Enum.GetName(typeof(ToolboxItemFilterType), filterType); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- namespace System.ComponentModel { using System; using System.Diagnostics; using System.Security.Permissions; ////// This attribute allows you to configure a filter that is used enable or disable toolbox items /// from being used on particular designers. For example, you may have a class of components /// that can only be used on a certain type of designer. You can configure a toolbox item /// filter to enforce that rule. For example, take a report designer that uses a component /// base class of ReportElement. You may want to make ReportElement toolbox items enabled only /// when a ReportDesigner is the active designer. To do this, you would add the following /// ToolboxItemFilter attributes to each class: /// /// [ToolboxItemFilter("MyReportFilterString", ToolboxItemFilterType.Require)] /// public class ReportElement : Component {} /// /// [ToolboxItemFilter("MyReportFilterString", ToolboxItemFilterType.Require)] /// public class ReportDesigner : Component {} /// /// These two filters specify that ReportElement toolbox items will only be /// enabled when a ReportDesigner is visible. By specifying a filter type of /// Require on the report designer class, this will disable any toolbox items /// that are not report elements. If the report designer specifed a filter type /// of "Allow" instead of "Require", other components would be enabled when the /// report designer was active. ReportElements would still be disabled when /// other designers were active, however, because ReportElement requires designers /// to have the given filter string. /// /// Toolbox item filtering is a useful way to restrict toolbox item visibility to /// cases where it is appropriate. This can help to avoid confusion for users, but /// you should use caution not to make items unusually restrictive. If you have a /// general purpose component, for example, you should allow the component to appear /// on any designer. /// /// The ASP.NET and Windows Forms designers both use filter attributes to prevent /// each other's components from being enabled. This is a useful restriction because, /// since each has several duplicate class names, it may be confusing to users and /// they may not know which controls to choose. /// /// [ AttributeUsage(AttributeTargets.Class, AllowMultiple=true, Inherited=true), Serializable ] public sealed class ToolboxItemFilterAttribute : Attribute { private ToolboxItemFilterType filterType; private string filterString; private string typeId; ////// Initializes a new ToolboxItemFilterAttribute with the provide filter string and a filter type of /// "Allow". /// public ToolboxItemFilterAttribute(string filterString) : this(filterString, ToolboxItemFilterType.Allow) { } ////// Initializes a new ToolboxItemFilterAttribute with the provide filter string and filter type. /// public ToolboxItemFilterAttribute(string filterString, ToolboxItemFilterType filterType) { if (filterString == null) filterString = String.Empty; this.filterString = filterString; this.filterType = filterType; } ////// Retrieves the filter string for this attribute. The filter string is a user-defined string that /// is used to identify matching attributes. /// public string FilterString { get { return filterString; } } ////// Retrieves the filter type for this attribute. The filter type determines how the filter string should /// be applied. /// public ToolboxItemFilterType FilterType { get { return filterType; } } ////// The unique identifier for this attribute. All ToolboxItemFilterAttributes with the same filter string /// are considered the same, so they return the same TypeId. /// public override object TypeId { get { if (typeId == null) { typeId = GetType().FullName + filterString; } return typeId; } } public override bool Equals(object obj) { if (obj == this) { return true; } ToolboxItemFilterAttribute other = obj as ToolboxItemFilterAttribute; return (other != null && other.FilterType.Equals(FilterType) && other.FilterString.Equals(FilterString)); } public override int GetHashCode() { // No need to hash on filter type as well; there shouldn't be that many duplicates. return filterString.GetHashCode(); } public override bool Match(object obj) { ToolboxItemFilterAttribute other = obj as ToolboxItemFilterAttribute; if (other == null) { return false; } // different filter string kills a match immediately. // if (!other.FilterString.Equals(FilterString)) { return false; } return true; } public override string ToString() { return filterString + "," + Enum.GetName(typeof(ToolboxItemFilterType), filterType); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XmlArrayItemAttributes.cs
- Bits.cs
- OptionUsage.cs
- TextDecoration.cs
- RoutingSection.cs
- CultureMapper.cs
- BindingMemberInfo.cs
- StrongNameKeyPair.cs
- DefaultCommandConverter.cs
- ArcSegment.cs
- DiagnosticTraceSchemas.cs
- FocusTracker.cs
- NullableFloatSumAggregationOperator.cs
- GetWinFXPath.cs
- VarInfo.cs
- ValidatorCollection.cs
- ServiceOperation.cs
- DataFormats.cs
- MetadataHelper.cs
- BypassElementCollection.cs
- AddIn.cs
- XPathAncestorQuery.cs
- TileModeValidation.cs
- Models.cs
- WebServiceHostFactory.cs
- SignatureToken.cs
- SemanticAnalyzer.cs
- SqlUtils.cs
- HtmlFormParameterWriter.cs
- TextParentUndoUnit.cs
- XamlGridLengthSerializer.cs
- OleDbParameterCollection.cs
- EdmSchemaError.cs
- ReceiveCompletedEventArgs.cs
- SessionIDManager.cs
- DetailsViewInsertedEventArgs.cs
- XmlSchemaNotation.cs
- NameValuePermission.cs
- CompositeKey.cs
- InputMethod.cs
- EventNotify.cs
- __ConsoleStream.cs
- RotateTransform.cs
- OutputScopeManager.cs
- SynchronizationHandlesCodeDomSerializer.cs
- ClientOptions.cs
- Identity.cs
- MessageFormatterConverter.cs
- ContourSegment.cs
- FontDialog.cs
- StylusPointPropertyInfo.cs
- IPAddress.cs
- Config.cs
- ProcessHostConfigUtils.cs
- DesignerVerb.cs
- ItemsChangedEventArgs.cs
- DataGridViewCellPaintingEventArgs.cs
- PointLightBase.cs
- RectConverter.cs
- ImportCatalogPart.cs
- TextModifier.cs
- MimeReflector.cs
- ExpressionVisitor.cs
- ISFClipboardData.cs
- CompiledXpathExpr.cs
- ConfigXmlWhitespace.cs
- ZipArchive.cs
- RegexMatch.cs
- ControlAdapter.cs
- TextBreakpoint.cs
- SystemTcpConnection.cs
- Visual3D.cs
- AssertUtility.cs
- SymbolUsageManager.cs
- AttachmentCollection.cs
- ServiceBuildProvider.cs
- SQLBytes.cs
- SecurityDescriptor.cs
- CapiNative.cs
- WindowsFormsHostAutomationPeer.cs
- StructuralCache.cs
- CalendarTable.cs
- TranslateTransform3D.cs
- ProfileSettingsCollection.cs
- TypedMessageConverter.cs
- WorkflowFormatterBehavior.cs
- BrowserInteropHelper.cs
- ArrayConverter.cs
- OpenTypeCommon.cs
- WebPartMovingEventArgs.cs
- XmlSerializerOperationFormatter.cs
- __ComObject.cs
- DecoderExceptionFallback.cs
- Sql8ExpressionRewriter.cs
- AgileSafeNativeMemoryHandle.cs
- WindowsEditBoxRange.cs
- DataGridColumnCollectionEditor.cs
- NonVisualControlAttribute.cs
- TreeNode.cs
- _TLSstream.cs