Share via


Meta Veri Filtreleme

Meta verileri süzme, Özellikler, öznitelikler ve bir bileşeni veya denetimi tarafından tasarım zamanında vebu olaylarý kümesini değiştirmek bir tasarımcı sağlar.

Örneğin, Control adında bir özellik olan Visible denetimin görünür olup olmadığını belirler.Geliştirici tasarım yüzeyi üzerinde konumlandırabilirsiniz için tasarım zamanında, ancak Denetim her zaman görünür, bu özelliğin değeri ne olursa olsun kalması gerekir.Tasarımcı için Control yerini Visible özelliği ile kendi sürüm tasarım zamanında ve daha sonra çalışma zamanı bu özelliğin değerini geri yükler.

Meta verileri süzme işlemi gerçekleştirmek için bir tasarımcı olabilir ya da Uygula IDesignerFilter eklemek veya arabirim bir ITypeDescriptorFilterService üzerinde herhangi bir bileşen tasarım zamanı ortamındaki meta verileri süzme gerçekleştirebilirsiniz tasarım Hizmetleri Sağlayıcısı uygulaması.

Tasarım zamanında bir bileşeni seçildiğinde, özellik tarayıcısı yöntemleri bileşen öznitelikleri, olayları ve özellikleri için sorgular bir TypeDescriptor.Bir bileşen öznitelikleri, olayları ve özelliklerini tasarım modunda sorgulandığında, bileşen için herhangi bir tasarımcı, uygulayan IDesignerFilter arabirim öznitelikleri, olayları ve bileşen tarafından döndürülen özellikler kümesini değiştirmek için bir fırsat verilmiştir.Herhangi bir etkin yöntemleri ITypeDescriptorFilterService sonraki tüm öznitelikleri, olayları ve özelliklerini filtreleme yapmak izin için çağrıldı.

Tasarım modunda bir bileşeni genellikle etiketin öznitelikleri, olayları ve özellikleri için sorgulanan, Refresh yöntemi, TypeDescriptor bileşeni, Properties penceresi yenilendiğinde, Tasarım modunda oluşturulan ya da yeniden ve birincil seçimin ayarlandığında denir.Diğer nesnelerin veya bir tasarım ortamında yöntemlerini, yöntemler çaðýrýn bir TypeDescriptor diğer zamanlarda.

IDesignerFilter bileşen meta verileri filtreleme arabirimi

IDesignerFilter Arabirimi geçersiz kılındı ve bir tasarımcı, Özellikler, olaylar veya tasarım zamanında Tasarımcısı tarafından yönetilen bir bileşen tarafından sergilenen özniteliklerini değiştirmek için uygulanan yöntemler kümesini tanımlar.

Her yöntemi IDesignerFilter arabirimi "Öncesi" veya "Post" öneki.Design View'e son her yöntemi "Öznitelikleri", "Olay" veya "Özellikler" üye türüne bağlı olarak eklemek, değiştirmek veya kaldırmak verir, ile ekli.Tüm öznitelikleri, olayları veya özellikler eklemek için adı "Öncesi" ile başlayan uygun yöntemi kullanın.Tüm öznitelikleri, olaylar veya özelliklerini değiştirmek veya kaldırmak için adı "Post" ile başlayan uygun yöntemi kullanın.Adları "Öncesi" ile başlayan adları "Post" ile başlayan yöntemleri hemen önce denir.

Geçersiz bir özniteliği veya öznitelikleri eklemek istiyorsanız, uygulamak PreFilterAttributes yeni ekler yöntemi Attribute için IDictionary yöntemine geçildi.Sözlük anahtarlarını kimlikleri, nitelikleri türüdür.Geçersiz bir özniteliği veya öznitelikleri değiştirmek veya kaldırmak için uygulamak PostFilterAttributes yöntemi.

Geçersiz bir olay ya da olayları eklemek istiyorsanız, uygulamak PreFilterEvents yeni ekler yöntemi EventDescriptor için IDictionary yöntemine geçildi.Sözlük anahtarlarını olayları adlarıdır.Bir olay veya olaylar değiştirmek veya kaldırmak için geçersiz kılma uygulamak PostFilterEvents yöntemi.

Geçersiz bir özellik veya özellikler eklemek istiyorsanız, uygulamak PreFilterProperties yeni ekler yöntemi PropertyDescriptor için IDictionary yöntemine geçildi.Sözlükteki anahtar özelliklerini adlarıdır.Bir özellik veya özelliklerini değiştirmek veya kaldırmak için geçersiz kılma uygulamak PostFilterProperties yöntemi.

[!NOT]

Ne zaman bir sınıfını genişleten uygulayan bir tasarımcı IDesignerFilter, her sonrasıMethodName yöntemini çağırmanız karşılık gelen sonrasıMethodName kendi nitelikleri ve her değiştirdikten sonra temel sınıf yöntemi öncesiMethodName yöntemini çağırmanız ilgili öncesiMethodName kendi niteliklerini değiştirmeden önce temel sınıf yöntemi.

Aşağıdaki kod örneği engelleme yöntemi imzalarını gösterir IDesignerFilter arabirimi.

Public Interface IDesignerFilter
   Sub PostFilterAttributes(attributes As IDictionary)
   Sub PostFilterEvents(events As IDictionary)
   Sub PostFilterProperties(properties As IDictionary)
   Sub PreFilterAttributes(attributes As IDictionary)
   Sub PreFilterEvents(events As IDictionary)
   Sub PreFilterProperties(properties As IDictionary)
End Interface
public interface IDesignerFilter {
    void PostFilterAttributes(IDictionary attributes);
    void PostFilterEvents(IDictionary events);
    void PostFilterProperties(IDictionary properties);
    void PreFilterAttributes(IDictionary attributes);
    void PreFilterEvents(IDictionary events);
    void PreFilterProperties(IDictionary properties);
}

Aşağıdaki kod örneği uygulaması gösterilmiştir IDesignerFilter , ekler bir Color ilişkili component Designer'a özelliği.System.Design.dll bir başvuru eklemeniz gerekir.

Imports System
Imports System.ComponentModel
Imports System.ComponentModel.Design
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Windows.Forms.Design

Namespace IDesignerFilterSample
 _
    Public Class DesignerFilterDesigner
        Inherits ComponentDesigner        

        ' Designer color property to add to component.
        Public Property TestColor() As Color
            Get
                Return Me.intcolor
            End Get
            Set(ByVal Value As Color)
                Me.intcolor = Value
            End Set
        End Property

        ' Color for TestColor property.
        Private intcolor As Color = Color.Azure

        Public Function DesignerFilterDesigner()
        End Function 'DesignerFilterDesigner

        ' Adds a color property of this designer to the component.
        Protected Overrides Sub PreFilterProperties(ByVal properties As System.Collections.IDictionary)
            MyBase.PreFilterProperties(properties)
            ' Adds a test property to the component.
            properties.Add("TestColor", TypeDescriptor.CreateProperty(GetType(DesignerFilterDesigner), "TestColor", GetType(System.Drawing.Color), Nothing))
        End Sub 'PreFilterProperties

    End Class 'DesignerFilterDesigner

    ' Component with which the DesignerFilterDesigner is associated.
    <Designer(GetType(DesignerFilterDesigner))>  _    
    Public Class TestComponent
        Inherits Component

        Public Function TestComponent()
        End Function 'TestComponent
    End Class 'TestComponent

End Namespace
using System;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Forms.Design;

namespace IDesignerFilterSample
{
   public class DesignerFilterDesigner : ComponentDesigner, IDesignerFilter
   {
      // Designer color property to add to component.
      public Color TestColor
      {
         get
         { return this.intcolor;   }
         set
         { this.intcolor = value; }
      }

      // Color for TestColor property.
      private Color intcolor = Color.Azure;

      public DesignerFilterDesigner()
      {}

      // Adds a color property of this designer to the component.
      protected override void PreFilterProperties(System.Collections.IDictionary properties)
      {
         base.PreFilterProperties(properties);
         // Adds a test property to the component.
         properties.Add("TestColor", TypeDescriptor.CreateProperty(typeof(DesignerFilterDesigner), "TestColor", typeof(System.Drawing.Color), null));
      }
   }

   // Component with which the DesignerFilterDesigner is associated.
   [Designer(typeof(DesignerFilterDesigner))]
   public class TestComponent : Component
   {
      public TestComponent()
      {}
   }
}

Bir Windows Forms örneği için Denetim özelliğini kullanarak filtre uygulayan Tasarımcısı IDesignerFilter arabirim için bkz: Windows Forms Designer örnek.

ITypeDescriptorFilterService genel tasarım modu meta veri süzme

Meta verileri ekleyerek herhangi bir bileşen tasarım zamanı projesinde süzme sağlayabilir bir ITypeDescriptorFilterService tasarım zamanında hizmetlerini sağlayan bir hizmet sağlayıcısına uygulaması kullanarak AddService yöntemi, IServiceContainer arabirimi uygulanan tarafından ISite tarafından döndürülen Site özelliği bir Component Tasarım modunda sited.

Aşağıdaki kod örneği nasıl ekleneceği gösterilmektedir bir ITypeDescriptorFilterService adlı hizmeti ExampleFilterService.

IDesignerHost dh = (IDesignerHost)this.Component.GetService(typeof(IDesignerHost));
if( dh != null )
{
   // First gets any previous ITypeDescriptorFilterService to replace when 
   // the current service is removed, and to call if the new service 
   // implements service chaining.
   ITypeDescriptorFilterService itdfs = 
   (ITypeDescriptorFilterService)dh.GetService(    typeof(ITypeDescriptorFilterService));
   
   oldService = (ITypeDescriptorFilterService)dh.GetService(
   typeof(ITypeDescriptorFilterService));
         
   if(oldService != null)
      // Removes any old ITypeDescriptorFilterService.
      dh.RemoveService(typeof(ITypeDescriptorFilterService));
         
   // Adds an ExampleFilterService that implements service chaining.
   dh.AddService(typeof(ITypeDescriptorFilterService), 
   new ExampleFilterService(oldService));
}

Bir örnek için ITypeDescriptorFilterService uygulaması, başvuru belgelerine bakın ITypeDescriptorFilterService sınıfı.

Ayrıca bkz.

Görevler

Nasıl yapılır: Tasarım Modunda Bir Bileşenin Öznitelikleri, Olayları ve Özelliklerini Ayarlama

Kavramlar

Temel Tasarımcı Sınıfları

Tasarımcı Fiilleri

Nasıl yapılır: Bir Denetim için Tasarımcı Uygulama

Tür Tanımlayıcısına Genel Bakış

Diğer Kaynaklar

Özel Tasarımcılar