Share via


Özel rapor madde tasarım zamanı bileşeni oluşturma

Özel rapor öğesi tasarım -saat Visual Studio Rapor Tasarımcısı ortamında kullanılabilecek bir denetimi bir bileşendir.Özel rapor öğesi tasarım -saat bileşeni sürükle ve bırak işlemleri ile tümleştirme kabul edebileceği bir etkin tasarım yüzeyi sağlar Visual Studio özellik tarayıcısı ve becerisi sağlamaya yönelik özel özellik Düzenleyicileri.

Özel bir öğe tasarım - raporsaat bileşeni, kullanıcı bir özel rapor öğesi tasarım ortamında rapor getirin, özel rapor öğesi için özel veri özelliklerini ayarlamak ve sonra özel rapor öğesi rapor projenin bir parçası kaydedin.

Tasarım - kullanarak ayarlamak özelliklerinisaat Bileşen geliştirme ortamında seri ve ana tasarım ortamı tarafından serisi ve ardından raporu Tanım Dili (rdl) dosyasındaki öğeleri olarak depolanır.Ne zaman rapor yürütüldüğünde kullanarak tasarım - set özelliklerini rapor işlemci tarafındansaat bileşen rapor işlemci tarafından geçirilen bir özel rapor öğesi run - içinsaat bileşeni, özel rapor öğesi yapar ve rapor işlemci geçirir.

Not

The custom report item design-time component is implemented as a Microsoft .NET Framework component.Bu belge özel rapor öğesi tasarım - için özel uygulama ayrıntılarını açıklamaksaat bileşeni.Kullanarak bileşenler geliştirme hakkında daha fazla bilgi için .NET Framework, bakın bileşenleri Visual Studio msdn Kitaplığı'nda.

Tam olarak uygulanan özel rapor öğesi örnek için bkz: SQL Server Reporting Services ürün örnekleri.

Tasarım zamanı bileşeni uygulama

Ana sınıfı, bir özel rapor öğesi tasarım -saat bileşen devralınan Microsoft.ReportDesigner.CustomReportItemDesigner WalkTreeStandart öznitelikleri için kullanılan ek olarak bir .NET Framework arabelleðin bileþen sýnýfýnýzýn bir denetim tanımlamak bir CustomReportItem öznitelik.Bu öznitelik için özel rapor öğesi adı reportserver tanımlanan karşılık gelmesi gerekir.yapılandırma dosyası.Bir listesini görmek için .NET Framework , öznitelikler öznitelikler Bkz: .NET Framework sdk belgeleri.

Aşağıdaki kod örneği, bir özel rapor öğesi tasarım - için uygulanan öznitelikleri gösterirsaat Denetim:

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 bir özel rapor öğesi için geçmesi bir CustomData WalkTreeUygulamanız, CustomReportItemDesigner sınıfı geçersiz kılmak InitializeNewComponent yöntemi, bileşenin yeni bir örneğini oluşturmak için CustomData sınıfı ve küme için varsayılan değerler.

Aşağıdaki kod örneği bir özel rapor öğesi tasarım - gösterilmiştirsaat bileşen sınıfı geçersiz kılma CustomReportItemDesigner.InitializeNewComponent yöntem bileşenin başlatmak için 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'nde tasarım ortamında birkaç yolu.Tasarım - tarafından sunulan özellikleri değiştirebilirsinizsaat ile işaretlenmiş bileşen BrowsableAttribute özniteliğini kullanarak Visual Studio özellik tarayıcısı.Ayrıca, özellikleri özel rapor öğesi tasarım zeminine öğeleri sürükleyerek veya tasarım ortamında denetimi sağ tıklatıp seçerek değiştirebilirsiniz Özellikler özel özellikleri penceresini görüntülemek için kısayol menüsünden.

Aşağıdaki kod örneği gösterildiği bir Microsoft.ReportDesigner.CustomReportItemDesigner.CustomData içeren özellik BrowsableAttribute uygulanan öznitelik:

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

Kendi Tasarım - sağlayabilirsaat bileşen özel özellikler Düzenleyicisi iletişim kutusu.Özel özellik düzenleyicisini uygulaması'ndan alması gerektiğini ComponentEditor sınıf ve oluşturma bir örnek özelliği düzenlemek için kullanılan bir iletişim kutusunun.

Dan devralan bir sınıf uygulaması aşağıdaki örnekte gösterildiği ComponentEditor ve bir özelleştirilmiş ö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;
    }
}

Kendi özel özellik Düzenleyici iletişim kutusu Rapor Tasarımcısı ifade Düzenleyicisi çağırabilirsiniz.Aşağıdaki örnekte, ifade Düzenleyicisi 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ğlı bir tasarımcı fiildir.Özel raporlama yaptığınızda öğe çalışma - bir bileşenin kısayol menüsünde görünecektir Tasarımcı fiil ekleyebilirsinizsaat denetimi tasarım ortamında kullanılıyor.Kullanılabilir Tasarımcı fiil listesi, çalışma - dönebilirsinizsaat kullanarak bileşen Verbs özellik.

Aşağıdaki kod örneği, bir tasarımcı fiil ve eklenmesi için bir olay işleyicisi gösterir DesignerVerbCollection, hem de olay işleyicisini kod:

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 uygulamak bir Microsoft.ReportDesigner.Design.Adornment WalkTreeBir kenarlık dışında ana alanları sağlamak özel rapor öğesi oyununda dikdörtgen tasarım yüzeyi.Bu alanlara, fare tıklatma ve sürükleme ve bırakma işlemleri gibi kullanıcı arabirim olayları ele alabilir.The Adornment class that is defined in the Reporting Services Microsoft.ReportDesigner namespace is a pass-through implementation of the Adorner class found in Windows Forms.Tam belge için Adorner , sınıf Bkz: Davranış Hizmeti'ne genel bakış msdn Kitaplığı'nda.Uygulayan örnek kodu için bir Microsoft.ReportDesigner.Design.Adornment , sınıf Bkz: SQL Server Reporting Services ürün örnekleri.

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

  • Tasarım zamanı öznitelikleri bileşenleri için

  • Bileşenleri Visual Studio

  • İzlenecek yol: Visual Studio tasarım özelliklerinden yararlanır bir Windows Forms denetimi oluşturma