dipps
Goto Top

Linie in Chart Zeichnen

Hallo Ich Erstelle ein Chart in C# wie im Quelltext zu sehen.
sqlConnection.Open();

                SqlCommand myCommand = new SqlCommand("SELECT Datum, Start, Stop FROM dbo.MaschZuendung()", sqlConnection);  

                SqlDataReader myReader = null;
                myReader = myCommand.ExecuteReader();



                chart1.Series.Clear();
                chart1.DataBindCrossTable(myReader, "Datum", "Datum", "Start,Stop", "");  



                foreach (System.Windows.Forms.DataVisualization.Charting.Series s in chart1.Series)
                {
                    s.Color = Color.Red;
                    s.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.RangeBar;
                }

                chart1.Legends.Enabled = false;

                chart1.ChartAreas.AxisY.LabelStyle.Format = "HH";  
                chart1.ChartAreas.AxisX.LabelStyle.Format = "dd.MM.yyyy";  
                chart1.ChartAreas.AxisY.Interval = 1;
                chart1.ChartAreas.AxisX.Interval = 1;
                chart1.ChartAreas.AxisY.IntervalType = System.Windows.Forms.DataVisualization.Charting.DateTimeIntervalType.Hours;

                



                DateTime minDate = new DateTime(1900, 1, 1, 0, 0, 0);
                DateTime maxDate = minDate.AddHours(24);
                chart1.ChartAreas.AxisY.Minimum = minDate.ToOADate();
                chart1.ChartAreas.AxisY.Maximum = maxDate.ToOADate();
                
                chart1.ChartAreas.AxisX.Minimum = dateTimePicker1.Value.ToOADate()-1;
                
                chart1.ChartAreas.AxisX.Maximum = dateTimePicker1.Value.ToOADate();
                chart1.ChartAreas.AxisX.LabelStyle.Enabled = false;

                

                sqlConnection.Close();
Nun habe ich noch einen Scrollbar wo ich Die Uhrzeit Wählen möchte.
trackBar1_Scroll
Hier bekomme ich die Daten im Format 06:26:00;06:27:00;.... jenachdem was gewählt wird.
Ich möchte jetzt gernedas wenn ich mit dem Scrollbar 6:26 wähle er mir im Chart1 eine Linie bei 06:26 zeichnet leider bekomme ich das nicht hin. Wer kann mir helfen?

Content-ID: 363135

Url: https://administrator.de/contentid/363135

Ausgedruckt am: 25.11.2024 um 10:11 Uhr

135333
135333 01.02.2018 aktualisiert um 15:10:43 Uhr
Goto Top
Hi benutze die Eigenschaft CursorX der ChartArea face-wink. damit kannst du eine vertikale Linie an der Position des Datenpunkts einblenden.
chart1.ChartAreas.CursorX.SetCursorPosition(Trackbar1.Value)

Gruß snap
screenshot
Dipps
Dipps 01.02.2018 aktualisiert um 15:31:51 Uhr
Goto Top
Wie sieht bei dir Trackbar1.Value aus? Bei mir ist 1 bis XXX da es auf eine DataGrid greift und die Zeilennummer enthält.

Ich müsste dann so
chart1.ChartAreas.CursorX.SetCursorPosition(Convert.ToDateTime(dataGridView1.Rows[trackBar1.Value].Cells[1].Value.ToString()).ToString("1900-01-01 HH:mm:00"));  

Aber das geht nicht da der Wert Doubel sein muss. Wenn ich den Convertiere geht es aber auch nicht face-sad
Was mache ich noch Falsch?
135333
135333 01.02.2018 aktualisiert um 15:36:17 Uhr
Goto Top
Zitat von @Dipps:

Wie sieht bei dir Trackbar1.Value aus?
Ist ein ganz normaler Double-Wert, der die Index-Position der Werte im Chart repräsentiert...
Bei mir ist 1 bis XXX da es auf eine DataGrid greift und die Zeilennummer enthält.
Jepp.

Ich müsste dann so
> chart1.ChartAreas.CursorX.SetCursorPosition(Convert.ToDateTime(dataGridView1.Rows[trackBar1.Value].Cells[1].Value.ToString()).ToString("1900-01-01 HH:mm:00"));  
> 

Aber das geht nicht da der Wert Doubel sein muss. Wenn ich den Convertiere geht es aber auch nicht face-sad
Was mache ich noch Falsch?
Da gehört ja auch ein Double-Wert rein und kein Datums-String (Position des entsprechenden Wertes im Chart equivalent zum Wert in der Trackbar)
Dipps
Dipps 01.02.2018 um 16:36:16 Uhr
Goto Top
Ich habe mal ein Bild von meinem Diagramm angefügt.
Ich habe chart1.ChartAreas.CursorX.SetCursorPosition(Trackbar1.Value); den Befehl genutzt aber er macht mir leider keine Linie wenn ich den Trackbar verschiebe face-sad
diagramm
135333
135333 01.02.2018 aktualisiert um 16:46:06 Uhr
Goto Top
Cursor mit CursorX.IsUserEnabled = true aktivieren ...

Einfach mal lesen
https://msdn.microsoft.com/de-de/library/system.windows.forms.datavisual ...

Beispielprojekt (VS)
https://we.tl/SIqxUGZf7I
Dipps
Dipps 01.02.2018 aktualisiert um 16:52:36 Uhr
Goto Top
Habe ich Aktiviert. Auch die Farbe hatte ich schon.
Hier mein Code vom Scroll Ändern
label9.Text = Convert.ToDateTime(dataGridView1.Rows[trackBar1.Value].Cells[1].Value.ToString()).ToString("HH:mm");  
                m_date = Convert.ToDateTime(dataGridView1.Rows[trackBar1.Value].Cells[1].Value.ToString()).ToString("1900-01-01 HH:mm:00");  
                




                dataGridView6.Rows.Clear();
                dataGridView6.Rows.Add(dateTimePicker1.Value.ToString("yyyy.MM.dd 00:00:00"), Convert.ToDateTime(dataGridView1.Rows[trackBar1.Value].Cells[1].Value.ToString()).ToString("1900-01-01 HH:mm:00"), Convert.ToDateTime(dataGridView1.Rows[trackBar1.Value].Cells[1].Value.ToString()).ToString("1900-01-01 HH:mm:00"));  

                
                chart1.ChartAreas.CursorX.IsUserEnabled = true;
                
                chart1.ChartAreas.CursorX.SelectionColor = Color.Green;
                chart1.ChartAreas.CursorX.SetCursorPosition(trackBar1.Value);
                

Ich bekomme es leider nicht hin.
135333
135333 01.02.2018 aktualisiert um 17:00:33 Uhr
Goto Top
S. Codeprojekt zum Download oben ...

Ist doch ganz einfach, die Cursorposition ist einfach die absolute Indexposition von den im Chart geladenen Daten.