Aracılığıyla paylaş


Özel rapor öğesisi tasarım saatı bileşeni oluşturma

Özel bir rapor maddesi tasarım-CVE-2006-saat bileşeni Visual Studio Rapor Tasarımcısı ortamında kullanılan bir denetimdir.Özel rapor öğesi tasarım-CVE-2006-saat bileşeni sürükle ve bırak işlemleri ile bütünleştirme kabul edebileceği bir etkin bir tasarım yüzeyine sağlar Visual Studio özellik tarayıcısı ve özelliği uyarlanmış özellik Düzenleyicileri'ni sağlar.

Özel bir öğenin tasarım-CVE-2006-rapor saat bileşeni, kullanıcı Tasarım ortamında, bir rapordaki bir özel rapor öğesi getirin, özel rapor öğenin özel bir veri özellikleri ayarlamak ve özel rapor öğe raporu proje bir parçası olarak kaydedin.

Tasarım-kullanılarak ayarlanan özellikler saat bileşen geliştirme ortamında sıralanmış ve ana tasarım ortamı tarafından serisi ve sonra raporu Tanım Dili (RDL) dosyasındaki öğeleri olarak depolanır.Rapor Tasarım-kullanılarak ayarlanmış olan özellikleri rapor işlemcisi tarafından ne zaman gerçekleştirildiğinde saat bileşeni rapor işlemci tarafından geçirilen bir özel rapor madde çalışma-saat maddenin özel bir rapor oluşturur ve bunu rapor işlemciye geçirmeden bileşeni.

Not

The custom report item design-time component is implemented as a Microsoft .NET Framework component.Bu belge özel rapor madde tasarım-için belirli bir uygulama ayrıntılarını açıklanmıştır saat bileşeni.Kullanarak bileşenler geliştirme hakkında daha fazla bilgi için .NET Framework, bkz: Visual Studio'da bileşenleri MSDN Kitaplığı

Bir tasarım-CVE-2006-saat bileşeni'ni kullanma

Özel bir ana sınıf Rapor maddesi tasarım-CVE-2006-saat bileşeni klasörden devralınan Microsoft.ReportDesigner.CustomReportItemDesigner sınıf. Için kullanılan standart öznitelikleri için ek bir .NET Framework denetimi, bileşen sınıfınızın tanımlamanız gerekir bir CustomReportItem özniteliği. Bu öznitelik, özel rapor adına karşılık gelmelidir öğe reportserver.config dosyasında tanımlanan.Listesini görmek için .NET Framework öznitelikleri de öznitelikleri Bkz: .NET Framework SDK belgeleri.

Aşağıdaki kod örneği, özel bir uygulanmakta olan öznitelikleri gösterir rapor öğesi tasarım zamanı denetimi:

namespace PolygonsCRI
{
    [LocalizedName("Polygons")]
    [Editor(typeof(CustomEditor), typeof(ComponentEditor))]
        [ToolboxBitmap(typeof(PolygonsDesigner),"Polygons.ico")]
        [CustomReportItem("Polygons")]

    public class PolygonsDesigner : CustomReportItemDesigner
    {
...

Bileşen başlatılıyor

Kullanıcı tarafından belirtilen özellikleri kullanarak özel rapor öğe için geçmesi bir Microsoft.ReportDesigner.CustomData sınıf. Uygulamanız, CustomReportItemDesigner sınıf geçersiz kılmak için InitializeNewComponent yöntem, bileşenin yeni örneğini oluşturmak için CustomData sınıf ve varsayılan değerleri ayarlayın.

Aşağıdaki kod örneği, bir özel rapor madde tasarım-örneği gösterilmektedir saat Bileşen sınıfı geçersiz kılma CustomReportItemDesigner.InitializeNewComponent yöntem, bileşen başlatılamıyor. CustomData sınıf:

public override void InitializeNewComponent()
        {
            CustomData = new CustomData();
            CustomData.DataRowHierarchy = new DataHierarchy();

            // Shape grouping
            CustomData.DataRowHierarchy.DataMembers.Add(new DataMember());
            CustomData.DataRowHierarchy.DataMembers[0].Group = new Group();
            CustomData.DataRowHierarchy.DataMembers[0].Group.Name = Name + "_Shape";
            CustomData.DataRowHierarchy.DataMembers[0].Group.GroupExpressions.Add(new ReportExpression());

            // Point grouping
            CustomData.DataRowHierarchy.DataMembers[0].DataMembers.Add(new DataMember());
            CustomData.DataRowHierarchy.DataMembers[0].DataMembers[0].Group = new Group();
            CustomData.DataRowHierarchy.DataMembers[0].DataMembers[0].Group.Name = Name + "_Point";
            CustomData.DataRowHierarchy.DataMembers[0].DataMembers[0].Group.GroupExpressions.Add(new ReportExpression());

            // Static column
            CustomData.DataColumnHierarchy = new DataHierarchy();
            CustomData.DataColumnHierarchy.DataMembers.Add(new DataMember());

            // Points
            IList<IList<DataValue>> dataValues = new List<IList<DataValue>>();
            CustomData.DataRows.Add(dataValues);
            CustomData.DataRows[0].Add(new List<DataValue>());
            CustomData.DataRows[0][0].Add(NewDataValue("X", ""));
            CustomData.DataRows[0][0].Add(NewDataValue("Y", ""));
        }

Bileşen Özellikleri değiştirme

Değiştirebileceğiniz CustomData özellikleri çeşitli şekillerde Tasarım ortamında. Değiştirebileceğiniz tasarım-tarafından sunulan tüm özellikleri saat ile işaretlenen bir bileşen BrowsableAttribute kullanarak özniteliği Visual Studio özellik Tarayıcısı'nı tıklatın. Buna ek olarak, özel rapor öğe's tasarım yüzeyine öğe s sürükleyerek veya tasarım ortamında denetimi sağ tıklatıp seçerek özelliklerini değiştirebilirsiniz Özellikleri kısayol menüsündeki bir özel özellikleri penceresini görüntülemek için.

Aşağıdaki örnekte gösterildiği kod bir Microsoft.ReportDesigner.CustomData olan özelliğe BrowsableAttribute öznitelik uygulanır:

[Browsable(true), Category("Data")]
public string DataSetName
{
      get
      {
         return CustomData.DataSetName;
      }
      set
      {
         CustomData.DataSetName = value;
      }
   }

Kendi Tasarım-sağlayabilir saat bileşen özel özellik Düzenleyici iletişim kutusu.Özel özellik düzenleyicisini uygulama alanından alması gerektiğini ComponentEditor sınıf ve özellik düzenleme için kullanılan bir iletişim kutusu bir örneğini oluşturmalısınız.

Aşağıdaki örnek, bir sınıfın devraldığı uygulaması gösterir. ComponentEditor ve bir özel özellik Düzenleyici iletişim kutusu görüntüler:

internal sealed class CustomEditor : ComponentEditor
{
   public override bool EditComponent(
      ITypeDescriptorContext context, object component)
    {
     PolygonsDesigner designer = (PolygonsDesigner)component;
     PolygonProperties dialog = new PolygonProperties();
     dialog.m_designerComponent = designer;
     DialogResult result = dialog.ShowDialog();
     if (result == DialogResult.OK)
     {
        designer.Invalidate();
        designer.ChangeService().OnComponentChanged(designer, null, null, null);
        return true;
     }
     else
        return false;
    }
}

Özel özellik Düzenleyici iletişim kutusu, Rapor Tasarımcısı ifade Düzenleyici çağırabilirsiniz.Aşağıdaki örnekte, ifade Düzenleyici, kullanıcı birleşik giriş kutusunda ilk öğe seçtiğinde çağrılır:

private void EditableCombo_SelectedIndexChanged(object sender, 
    EventArgs e)
{
   ComboBox combo = (ComboBox)sender;
   if (combo.SelectedIndex == 0 && m_launchEditor)
   {
      m_launchEditor = false;
      ExpressionEditor editor = new ExpressionEditor();
      string newValue;
      newValue = (string)editor.EditValue(null, m_designerComponent.Site, m_oldComboValue);
      combo.Items[0] = newValue;
   }
}

Tasarımcısı fiiller kullanma

Bir menü komutu için bir olay işleyicisi bağlantılı BIR tasarımcı fiildir.Özel rapor, madde çalışma-CVE-2006-bileşenin kısayol menüsünde görünen Tasarımcı fiiller ekleyebilirsiniz saat denetim tasarım ortamında kullanılır.Kullanılabilir bir tasarımcı fiilleri listesi, çalışma-dönebilirsiniz saat bileşen kullanarak Verbs özellik.

Aşağıdaki kod örneği, Tasarımcı fiil ve eklenmesini bir olay işleyicisi gösterir DesignerVerbCollection, olay işleyicisine kod yaný sýra:

public override DesignerVerbCollection Verbs
{
    get
    {
        if (m_verbs == null)
        {
            m_verbs = new DesignerVerbCollection();
            m_verbs.Add(new DesignerVerb("Proportional Scaling", new EventHandler(OnProportionalScaling)));
         m_verbs[0].Checked = (GetCustomProperty("poly:Proportional") == bool.TrueString);
        }

        return m_verbs;
    }
}

private void OnProportionalScaling(object sender, EventArgs e)
{
   bool proportional = !
        (GetCustomProperty("poly:Proportional") == bool.TrueString);
   m_verbs[0].Checked = proportional;
   SetCustomProperty("poly:Proportional", proportional.ToString());
   ChangeService().OnComponentChanged(this, null, null, null);
   Invalidate();
}

Adornments kullanma

Özel rapor öğesi sınıfları da uygulayabilirsiniz bir Microsoft.ReportDesigner.Design.Adornment sınıf. Bir kenarlık alanları tasarım yüzeyi ana dikdörtgenin dışında sağlamak özel rapor öğe denetim sağlar.Bu alanları, kullanıcı arabirim olayları, fare tıklatmaları ve sürükle ve bırak işlemleri gibi işleyebilir.The Adornment class that is defined in the Reporting ServicesMicrosoft.ReportDesigner namespace is a pass-through implementation of the Adorner class found in Windows Forms.Tüm belgeler üzerinde Adorner sınıf için bkz: Davranış hizmet-Genel Bakis MSDN KitaplığıKullanan örnek kod için bir Microsoft.ReportDesigner.Design.Adornment sınıf, lütfen bkz: Custom Report Item Sample.

Programlama ve Windows Forms'da kullanma hakkında daha fazla bilgi için Visual Studio, MSDN Kitaplığı'nda aşağıdaki konulara bakın:

  • Tasarım-CVE-2006-saat öznitelikleri bileşenleri

  • Bileşenleri Visual Studio

  • Adım adım işlem aşamaları: Visual Studio tasarım zamanı özellikleri avantajı alıyor bir Windows Forms denetimi oluşturma