Tworzenie składnika podczas projektowania niestandardowego raportu zapasu
Niestandardowy element raportu kontroli, które mogą być używane w środowisku Visual Studio Projektant raportów jest składnik czas projektowania.The custom element raportu składnik czas projektowania zapewnia powierzchni aktywnego projektu, który może akceptować operacji przeciągania i upuszczania, integrację z Visual Studio Właściwość przeglądarki i zdolność do zapewnienia edytory właściwości niestandardowych.
Ze składnika raport niestandardowy element czas projektowania przez użytkownika można umieścić element raportu niestandardowego w raporcie w środowisku projektowym zestaw niestandardowe dane właściwości niestandardowych zgłosić element, a następnie Zapisz raport niestandardowy element w ramach Projekt raportu.
Właściwości, które są zestaw w środowisku programistycznym przy użyciu składnika czas projektowania są szeregowane rozszeregować przez środowisko projektowania hosta i następnie przechowywane jako elementy w pliku definicja raportu Language (RDL).Gdy raport jest wykonywane przez procesor raportu, właściwości, które są ustawiane przy użyciu składnika czas projektowania są przekazywane przez procesor raport niestandardowy element raportu składnika czas wykonywania renderuje custom element raportu i przekazuje je do procesora raportu.
Uwaga
The custom report item design-time component is implemented as a Microsoft .NET Framework component.Ten dokument będzie opisywać szczegóły dotyczące implementacji specyficznych dla custom element raportu składnik czas projektowania.Aby uzyskać więcej informacji na temat projektowania składników za pomocą .NET Framework, zobacz Składniki w programie Visual Studio w bibliotece MSDN.
Wykonania składnik czas projektowania
Główna klasa niestandardowy element raportu składnika w czasie projektowania jest dziedziczona z Microsoft.ReportDesigner.CustomReportItemDesigner Klasa. Oprócz standardowych atrybutów, które są używane do .NET Framework formant, należy zdefiniować klasy składnika CustomReportItem atrybut. Tego atrybut musi odpowiadać nazwę element raportu niestandardowy zdefiniowany w pliku reportserver.config.Aby uzyskać listę .NET Framework atrybuty, zobacz atrybuty w .NET Framework Dokumentację zestawu SDK.
W poniższym przykładzie kodu pokazano atrybuty są stosowane do formantu czas projektowania raportu niestandardowego element:
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ą Microsoft.ReportDesigner.CustomData Klasa. Implementacji CustomReportItemDesigner Klasa powinny zastępować InitializeNewComponent metoda, aby utworzyć nową instancję programu składnika CustomData Klasa i ustaw ją jako wartości domyślne.
W poniższym przykładzie kodu pokazano przykład projektowania element raport niestandardowy-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 elementów
Można modyfikować CustomData właściwości w środowisku projektowym na kilka sposobów. Można zmodyfikować wszystkie właściwości, które są udostępniane przez składnik czas projektowania, w którym są oznaczone BrowsableAttribute atrybut przy użyciu Visual Studio Właściwość przeglądarki. Ponadto użytkownicy mogą modyfikować właściwości przez przeciąganie elementów na powierzchnię projektu element raportu niestandardowego lub klikając prawym przyciskiem myszy formant, w środowisku projektowania i wybierając polecenie Właściwości , aby wyświetlić okno właściwości niestandardowe, w menu skrótów.
Następujący kod przykładzie Microsoft.ReportDesigner.CustomData Właściwość BrowsableAttribute atrybut zastosowane:
[Browsable(true), Category("Data")]
public string DataSetName
{
get
{
return CustomData.DataSetName;
}
set
{
CustomData.DataSetName = value;
}
}
Okno dialogowe Edytor właściwości niestandardowych może dostarczyć składnik czas projektowania.Implementacja Edytora właściwość niestandardowych powinny dziedziczyć ComponentEditor klasy, a powinien utworzyć wystąpienie okno dialogowe, które mogą być używane do edycji właściwość.
W poniższym przykładzie pokazano Implementacja klasy, która dziedziczy 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;
}
}
Twoje okno dialogowe Edytor właściwość niestandardowych mogą być wywoływane Edytor wyrażenie Projektant raportów.W poniższym przykładzie Edytor wyrażenie 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 zlecenia
Projektanta zlecenie jest polecenie menu, związane z obsługą zdarzeń.Można dodać projektanta zleceń, które będą wyświetlane w menu skrótów składnika podczas niestandardowe zgłosić element wykonywania-czas formantu jest używany w środowisku projektowym.Lista dostępnych zleceń projektanta można przywrócić składnika czas wykonywania za pomocą Verbs Właściwość.
Poniższy przykład kodu pokazuje projektanta zlecenie i dodawanych do obsługi zdarzenie DesignerVerbCollection, a także dla kodu programu obsługa zdarzeń:
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
Mogą także implementować raport niestandardowy element klasy Microsoft.ReportDesigner.Design.Adornment Klasa. zakończenie umożliwia sterowanie element raportu niestandardowego, zapewniające poza głównym prostokąt na powierzchnię projektu.Obszary te mogą 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 ServicesMicrosoft.ReportDesigner namespace is a pass-through implementation of the Adorner class found in Windows Forms.Pełną dokumentację dotyczącą Adorner klasy, zobacz Omówienie usługa zachowanie w bibliotece MSDN.Przykładowy kod, który implementuje Microsoft.ReportDesigner.Design.Adornment klasy, zobacz Custom Report Item Sample.
Aby uzyskać więcej informacji na temat programowania i Windows Forms w użyciu Visual Studio, zobacz następujące tematy w bibliotece MSDN:
Projektowanie-czas atrybuty dla składników
Składniki Visual Studio
Przewodnik: Tworzenie formantu Windows Forms potrzebne zalety funkcji podczas projektowania programu Visual Studio