Guten morgen
Im nachfolgenden Code werden die Daten aus XML Dateien mittels Select/Case in einem Chart angezeigt. Über die Druckfunktion kann ich nun immer das aktl. Chart ausdrucken.
Nun meine Frage:
Wie bekomme ich es hin, alle Select-Bereiche automatisch durchlaufen zu lassen um diese dann alle auf einem Blatt auszudrucken.
Für Hilfe wäre ich Dankbar.
Spoiler anzeigen
Im nachfolgenden Code werden die Daten aus XML Dateien mittels Select/Case in einem Chart angezeigt. Über die Druckfunktion kann ich nun immer das aktl. Chart ausdrucken.
Nun meine Frage:
Wie bekomme ich es hin, alle Select-Bereiche automatisch durchlaufen zu lassen um diese dann alle auf einem Blatt auszudrucken.
Für Hilfe wäre ich Dankbar.
Die Ausgabe der Daten mittels Select/Case
Das ausdrucken eines Chart
Die Ausgabe der Daten mittels Select/Case
VB.NET-Quellcode
-
- Private Sub LoadWeatherDataAndChart()
- ReadDataFromXml()
- 'Datum im Format "yyyy-MM" aus dem DTPicker auslesen
- Dim selectedDate As String = dtp_Show.Value.ToString("yyyy-MM")
- 'Pfad zur ausgewählten XML-Datei erstellen
- Dim xmlFilePath As String = Path.Combine(NewDatafolder, selectedDate & ".xml")
- 'Prüfen, ob die ausgewählte XML-Datei existiert
- If File.Exists(xmlFilePath) Then
- Dim weatherDataList As List(Of WeatherDataDiag) = ReadWeatherDataFromXml(xmlFilePath)
- ' Chart-Serie erstellen, wenn ein Datentyp ausgewählt wurde
- If cmb_Wettertyp.SelectedItem IsNot Nothing Then
- ' Chart-Serie erstellen
- Dim chartSeries As New Series(cmb_Wettertyp.SelectedItem.ToString())
- Dim chartSeries1 As Series = Nothing ' Neue Serie erstellen
- Select Case cmb_Wettertyp.SelectedItem.ToString()
- Case "Regen"
- lblEinheiten.Text = "Regen: Niederschläge in mm"
- Chart1.ChartAreas(0).AxisX.Minimum = Double.NaN
- Chart1.ChartAreas(0).AxisX.Maximum = Double.NaN
- Chart1.ChartAreas(0).AxisY.Minimum = Double.NaN
- Chart1.ChartAreas(0).AxisY.Maximum = Double.NaN
- chartSeries.Color = Color.Blue
- chartSeries.ChartType = SeriesChartType.Column
- For Each weatherData As WeatherDataDiag In weatherDataList
- chartSeries.Points.AddXY(weatherData.Datum, weatherData.RegenTag)
- Next
- Case "SchneeTag"
- lblEinheiten.Text = "Schnee: Niederschläge in cm"
- Chart1.ChartAreas(0).AxisX.Minimum = Double.NaN
- Chart1.ChartAreas(0).AxisX.Maximum = Double.NaN
- Chart1.ChartAreas(0).AxisY.Minimum = Double.NaN
- Chart1.ChartAreas(0).AxisY.Maximum = Double.NaN
- chartSeries.Color = Color.DarkSlateBlue
- chartSeries.ChartType = SeriesChartType.Column
- chartSeries1 = New Series("SchneeNacht") ' Neue Serie initialisieren
- chartSeries1.Color = Color.Magenta
- chartSeries1.ChartType = SeriesChartType.Column
- For Each weatherData As WeatherDataDiag In weatherDataList
- chartSeries.Points.AddXY(weatherData.Datum, weatherData.SchneeTag)
- chartSeries1.Points.AddXY(weatherData.Datum, weatherData.SchneeNacht)
- Next
- Case "TempTag"
- lblEinheiten.Text = "Temperaturen in °Celsius"
- Chart1.ChartAreas(0).AxisX.Minimum = Double.NaN
- Chart1.ChartAreas(0).AxisX.Maximum = Double.NaN
- Chart1.ChartAreas(0).AxisY.Minimum = Double.NaN
- Chart1.ChartAreas(0).AxisY.Maximum = Double.NaN
- chartSeries.Color = Color.Maroon
- chartSeries.ChartType = SeriesChartType.Line
- chartSeries1 = New Series("TempNacht") ' Neue Serie initialisieren
- chartSeries1.Color = Color.DarkGreen
- chartSeries1.ChartType = SeriesChartType.Line
- For Each weatherData As WeatherDataDiag In weatherDataList
- chartSeries.Points.AddXY(weatherData.Datum, weatherData.TempTag)
- chartSeries1.Points.AddXY(weatherData.Datum, weatherData.TempNacht)
- Next
- Case "WindTag"
- lblEinheiten.Text = "Windstärke nach Beaufort-Skala"
- Chart1.ChartAreas(0).AxisX.Minimum = Double.NaN
- Chart1.ChartAreas(0).AxisX.Maximum = Double.NaN
- Chart1.ChartAreas(0).AxisY.Minimum = Double.NaN
- Chart1.ChartAreas(0).AxisY.Maximum = Double.NaN
- chartSeries.Color = Color.MediumVioletRed
- chartSeries.ChartType = SeriesChartType.Line
- chartSeries1 = New Series("WindNacht") ' Neue Serie initialisieren
- chartSeries1.Color = Color.DarkSlateGray
- chartSeries1.ChartType = SeriesChartType.Line
- For Each weatherData As WeatherDataDiag In weatherDataList
- chartSeries.Points.AddXY(weatherData.Datum, weatherData.WindTag)
- chartSeries1.Points.AddXY(weatherData.Datum, weatherData.WindNacht)
- Next
- Case "LuftfmaxTag"
- lblEinheiten.Text = "Luftfeuchtigkeit in %"
- Chart1.ChartAreas(0).AxisX.Minimum = Double.NaN
- Chart1.ChartAreas(0).AxisX.Maximum = Double.NaN
- Chart1.ChartAreas(0).AxisY.Minimum = Double.NaN
- Chart1.ChartAreas(0).AxisY.Maximum = Double.NaN
- chartSeries.Color = Color.DeepPink
- chartSeries.ChartType = SeriesChartType.Line
- chartSeries1 = New Series("LuftfminTag") ' Neue Serie initialisieren
- chartSeries1.Color = Color.LimeGreen
- chartSeries1.ChartType = SeriesChartType.Line
- For Each weatherData As WeatherDataDiag In weatherDataList
- chartSeries.Points.AddXY(weatherData.Datum, weatherData.LuftfminTag)
- chartSeries1.Points.AddXY(weatherData.Datum, weatherData.LuftfmaxTag)
- Next
- Case "LuftfmaxNacht"
- lblEinheiten.Text = "Luftfeuchtigkeit in %"
- Chart1.ChartAreas(0).AxisX.Minimum = Double.NaN
- Chart1.ChartAreas(0).AxisX.Maximum = Double.NaN
- Chart1.ChartAreas(0).AxisY.Minimum = Double.NaN
- Chart1.ChartAreas(0).AxisY.Maximum = Double.NaN
- chartSeries.Color = Color.DarkGreen
- chartSeries.ChartType = SeriesChartType.Line
- chartSeries1 = New Series("LuftfminNacht") ' Neue Serie initialisieren
- chartSeries1.Color = Color.OrangeRed
- chartSeries1.ChartType = SeriesChartType.Line
- For Each weatherData As WeatherDataDiag In weatherDataList
- chartSeries.Points.AddXY(weatherData.Datum, weatherData.LuftfminNacht)
- chartSeries1.Points.AddXY(weatherData.Datum, weatherData.LuftfmaxNacht)
- Next
- End Select
- ' Chart mit den Serien füllen
- Dim selectedDatein As Date = dtp_Show.Value
- Dim formattedDate As String = selectedDatein.ToString("MMMM-yyyy")
- Chart1.Series.Clear()
- Chart1.Titles.Clear()
- Chart1.ChartAreas.Clear() ' Alle ChartAreas löschen
- Chart1.Titles.Add("Wetterdaten für den Monat : " & formattedDate)
- ' Neue ChartArea initialisieren
- Dim chartArea1 As New ChartArea()
- chartArea1.AxisX.IntervalType = DateTimeIntervalType.Days ' Achsenintervalltyp auf Tage setzen
- chartArea1.AxisX.Interval = 1 ' Achsenintervall auf 1 Tag setzen
- chartArea1.AxisX.LabelStyle.Format = "dd.MM" ' Datumsformat für die X-Achse setzen
- ' chartArea1.AxisY.Title = cmb_Wettertyp.SelectedItem.ToString()
- Chart1.ChartAreas.Add(chartArea1) ' ChartArea hinzufügen
- ' Chart mit den Serien füllen
- Chart1.Series.Add(chartSeries)
- If chartSeries1 IsNot Nothing Then ' Sicherstellen, dass die neue Serie initialisiert wurde
- Chart1.Series.Add(chartSeries1)
- End If
- End If
- Else
- MessageBox.Show("Die ausgewählte Datei wurde nicht gefunden.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
- End If
- End Sub
Das ausdrucken eines Chart
VB.NET-Quellcode
-
- #Region "Drucken"
- Private Sub chkPrint_CheckedChanged(sender As Object, e As EventArgs) Handles chkPrint.CheckedChanged
- AktualisierePaper()
- End Sub
- Private Sub AktualisierePaper()
- If chkPrint.Checked Then
- Paperformat = True
- Else
- Paperformat = False
- End If
- End Sub
- Private Sub PrintChartButton_Click(sender As Object, e As EventArgs) Handles btnPrint.Click
- ' Create a PrintDocument object
- Dim pd As New Printing.PrintDocument()
- ' Set the printer settings
- pd.DefaultPageSettings.Landscape = Paperformat ' Set the page orientation to landscape
- pd.DefaultPageSettings.PaperSize = New PaperSize("A4", 827, 1169) ' Set the paper size to A4
- ' Add an event handler to print the chart
- AddHandler pd.PrintPage, AddressOf PrintChart
- ' Print the chart
- pd.Print()
- End Sub
- Private Sub PrintChart(sender As Object, e As Printing.PrintPageEventArgs)
- ' Draw the chart on a bitmap image
- Dim chartImage As New Bitmap(Chart1.Width, Chart1.Height)
- Chart1.DrawToBitmap(chartImage, New Rectangle(0, 0, Chart1.Width, Chart1.Height))
- ' Calculate the dimensions of the chart on the printed page
- Dim chartWidth As Integer = e.MarginBounds.Width
- Dim chartHeight As Integer = CInt(chartImage.Height * chartWidth / chartImage.Width)
- ' Draw the chart on the printed page
- e.Graphics.DrawImage(chartImage, e.MarginBounds.Left, e.MarginBounds.Top, chartWidth, chartHeight)
- End Sub
- #End Region
Asperger Autistin. Brauche immer etwas um gewisse Sachen zu verstehen.