Tworzenie składnika niestandardowego raportu element czasu projektowania
element raportu niestandardowy element projektu -czas składnik jest używany w środowisku Visual Studio Designer element raportuu.Element element raportu niestandardowy projekt -czas składnik zapewnia powierzchni aktywowanego projektu, który może akceptować operacji przeciągania i upuszczania, integracja z Visual Studio właściwość przeglądarki i możliwość wyświetlania właściwość niestandardowych edytorów.
Z niestandardowego element raportuu element projektu -czas składnik użytkownika można umieścić element element raportuu niestandardowego element raportuu w środowisku projektowym, ustawić właściwości niestandardowe dane element raportuu niestandardowego elementu, a następnie Zapisz element raportu niestandardowy element w ramach projektu element raportuu.
Właściwości, które są ustawiane przy użyciu projektu -czas składnika w środowisku programistycznym są szeregowane rozszeregować środowisko projektowania hosta i następnie przechowywane jako elementy w pliku Report Definition Language (RDL).Gdy element raportu jest wykonywane przez procesor element raportuu, właściwości, które są ustawiane przy użyciu projektu -czas składnika są przekazywane przez procesor element raportuu do uruchomienia elementu element raportuu niestandardowego -czas składnik, który renderuje element raportu niestandardowy element i przekazuje go procesora element raportuu.
Ostrzeżenie
The custom report item design-time component is implemented as a Microsoft .NET Framework component.Ten dokument będzie opisywać szczegóły implementacji specyficznych dla projektu raportu niestandardowego element -czas składnika.Aby uzyskać więcej informacji o tworzeniu składników za pomocą .NET Framework, zobacz składniki w programie Visual Studio w bibliotece MSDN.
Przykładowy element w pełni zaimplementowana element raportu niestandardowy, zobacz SQL Server Reporting Services próbek produktu.
Implementowanie składników czasu projektowania
Główna klasa niestandardowy raport element projektu -czas składnik jest dziedziczona z Microsoft.ReportDesigner.CustomReportItemDesigner klasyOprócz standardowych atrybut, które są używane do .NET Framework formantu, należy zdefiniować klasy składnika CustomReportItem atrybut.Atrybut ten musi odpowiadać nazwie niestandardowej element raportu określone w pliku reportserver.config.Lista .NET Framework atrybutów, zobacz atrybuty w .NET Framework dokumentacji zestawu SDK.
Poniższy przykład kodu pokazuje atrybuty są stosowane do projektowania element raportu niestandardowego -czas kontroli:
namespace PolygonsCRI
{
[LocalizedName("Polygons")]
[Editor(typeof(CustomEditor), typeof(ComponentEditor))]
[ToolboxBitmap(typeof(PolygonsDesigner),"Polygons.ico")]
[CustomReportItem("Polygons")]
public class PolygonsDesigner : CustomReportItemDesigner
{
...
Inicjowanie składnika
Przekazywanie określonych przez użytkownika właściwości element raportu niestandardowego za pomocą CustomData klasyImplementacji CustomReportItemDesigner klasy należy zastąpić InitializeNewComponent metoda, aby utworzyć nowe wystąpienie danego składnika CustomData klasy i zestaw go do wartości domyślnych.
Poniższy przykład kodu pokazuje przykład projektu elementu element raportuu niestandardowego -czas przesłanianie klasy składnika CustomReportItemDesigner.InitializeNewComponent metoda zainicjować składnika CustomData klasy:
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", ""));
}
Modyfikowanie właściwości składnika
Można zmodyfikować CustomData Właściwości w środowisku projektowym na kilka sposobów.Można modyfikować żadnych właściwość, które są udostępniane przez projekt -czas składnika, które są oznaczone BrowsableAttribute atrybut za pomocą Visual Studio właściwość przeglądarki.Ponadto, można zmodyfikować właściwości przeciągając elementy na powierzchnię projektu element raportu niestandardowego lub prawym przyciskiem myszy formant w środowisku projektowym i wybierając Właściwości w menu skrótów, aby wyświetlić okno właściwości niestandardowe.
Następujący kod ilustruje przykład Microsoft.ReportDesigner.CustomReportItemDesigner.CustomData Właściwość BrowsableAttribute zastosowany atrybut:
[Browsable(true), Category("Data")]
public string DataSetName
{
get
{
return CustomData.DataSetName;
}
set
{
CustomData.DataSetName = value;
}
}
Można podać projektu -czas z okno dialogowe Edytor właściwości niestandardowe składnika.Wdrożenia Edytor właściwość niestandardowych powinna dziedziczyć ComponentEditor klasy, a należy utworzyć wystąpienie dialogowego używanej do edycji właściwość.
W poniższym przykładzie implementacji klasy, która dziedziczy z ComponentEditor i wyświetla okno dialogowe Edytor właściwość niestandardowych:
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;
}
}
Dialogowe Edytor właściwość niestandardowych można wywoływać Edytor wyrażeń Projektant raportów.W poniższym przykładzie Edytor wyrażeń jest wywoływana, gdy użytkownik zaznacza pierwszy element w polu kombi:
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;
}
}
Za pomocą projektanta zleceń
Projektanta zlecenie jest polecenie menu, połączone z obsługa zdarzeń.Można dodać projektanta zleceń, które będą wyświetlane w menu skrótów składnika niestandardowe Zgłoś przedmiot Uruchom -czas formantu jest używany w środowisku projektowym.Lista dostępnych zleceń designer można powrócić z Uruchom -czas składnika za pomocą Verbs właściwość.
Poniższy przykład kodu pokazuje projektanta zlecenie i obsługa zdarzeń dodawanych do DesignerVerbCollection, jak również kod obsługi zdarzenie:
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();
}
Za pomocą skojarzenia
element raportu niestandardowy element klasy mogą także implementować Microsoft.ReportDesigner.Design.Adornment klasyzakończenie umożliwia sterowanie element raportu niestandardowego, zapewniające obszarów poza głównym prostokąt z powierzchni projektu.Obszary te można obsługiwać zdarzenia interfejs użytkownika, takie jak kliknięcie myszą i operacji przeciągania i upuszczania.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.Pełna dokumentacja Adorner klasy, zobacz Omówienie usługi zachowanie w bibliotece MSDN.Przykładowy kod, który implementuje Microsoft.ReportDesigner.Design.Adornment klasy, zobacz SQL Server Reporting Services próbek produktu.
Aby uzyskać więcej informacji dotyczących programowania i używania Windows Forms w Visual Studio, zobacz następujące tematy w bibliotece MSDN:
Atrybuty projektowania składników
Składniki Visual Studio
Instruktaż: Tworzenie formantu Windows Forms, który korzysta z funkcji projektowania usługi Visual Studio