Posted 17 July 2025, 10:53 am EST
Thanks, yes, it works well with timers, but I have a MQTT source adding values.
If one of the values is single.NaN (receiving nothing) then the flexChart1 hangs.
One more point: I have a rangeselector added, but the _rsXRangeSelector values don’t match the flexchart1 axisx settings.
Code is from your example:
Public Class Form1
Private _dataItems As New BindingList(Of DataItem)
Private _lastSaved_dataItem As New DataItem
Private _rsXRangeSelector As RangeSelector
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
SetupChart()
Timer1.Start()
End Sub
''' <summary>
''' Method for initializing FlexChart
''' </summary
Protected Sub SetupChart()
_dataItems.Add(New DataItem With {
.dt = Now,
.istHum = Single.NaN,
.istTemp = 0,
.sollHum = Single.NaN,
.sollTemp = 0,
.OnOff = 0,
.RunPause = 0})
FlexChart1.Series.Clear()
FlexChart1.ChartType = C1.Chart.ChartType.Line
'Setting FlexChart's Header
Me.FlexChart1.Header.Content = "Daily Price Movement"
'Passing data in FlexChart
Me.FlexChart1.DataSource = _dataItems
'Binding chart's AxisX to 'Date' so dates appear in Horizontal axis
Me.FlexChart1.BindingX = "dt"
'Binding FlexChart to 'Volume' so their market share appears in Vertical axis
FlexChart1.Series.Add(New Series() With {.Name = "Temperatur", .Binding = "istTemp", .ChartType = ChartType.Scatter, .SymbolSize = 10})
FlexChart1.Series.Add(New Series() With {.Name = "Humidity", .Binding = "istHum", .ChartType = ChartType.Scatter, .SymbolSize = 7})
FlexChart1.Series.Add(New Series() With {.Name = "SollTemp", .Binding = "sollTemp"})
FlexChart1.Series.Add(New Series() With {.Name = "SollHum", .Binding = "sollHum"})
'Positioning legend's at Top since as there axes at both left, right of FlexChart
Me.FlexChart1.Legend.Position = Position.Top
'#Region "setuprangeselector"
'Setup Range Selector Chart
'Setting ChartType for RangeSelection chart
_fcChartRangeSelector.ChartType = ChartType.Line
'Passing data in RangeSelection chart
_fcChartRangeSelector.DataSource = Me.FlexChart1.DataSource
'Binding chart's AxisX to 'Date' so dates appear in Horizontal axis
_fcChartRangeSelector.BindingX = "dt"
'Adding a new Series for High quote, hence binding it to "High" field
_fcChartRangeSelector.Series.Add(New Series() With {
.Binding = "istTemp"
})
AddHandler _fcChartRangeSelector.Rendered, Sub(s, e)
SetupRangeSelector()
Debug.Print($"rangeSel : {DateTime.FromOADate(_rsXRangeSelector.LowerValue)}, {DateTime.FromOADate(_rsXRangeSelector.UpperValue)}")
End Sub
End Sub
Private Sub SetupRangeSelector()
If _rsXRangeSelector IsNot Nothing Then
Return
End If
_rsXRangeSelector = New C1.Win.Chart.Interaction.RangeSelector(_fcChartRangeSelector)
'Handle event so axis values change as range selection changes
AddHandler _rsXRangeSelector.ValueChanged, Function(s, e)
flexChart1.AxisX.Min = _rsXRangeSelector.LowerValue
flexChart1.AxisX.Max = _rsXRangeSelector.UpperValue
End Function
_rsXRangeSelector.LowerValue = _rsXRangeSelector.UpperValue - 90
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
Dim rand As New Random
_lastSaved_dataItem.OnOff = 0
_lastSaved_dataItem.RunPause = 0
_lastSaved_dataItem.istTemp = rand.Next(10, 30)
_lastSaved_dataItem.sollTemp = rand.Next(20, 25)
_lastSaved_dataItem.istHum = rand.Next(15, 90)
_lastSaved_dataItem.sollHum = rand.Next(20, 80)
_lastSaved_dataItem.dt = Now
_dataItems.Add(_lastSaved_dataItem)
_lastSaved_dataItem = New DataItem
End Sub
End Class
Maybe it’s a country/language setting, the selector does’nt see the underlying datetime format in a correct way. Min and Max values are half a day away.
One more suggestion is a preview of the post, before posting and why does
some code
does not render correctly (see above)?
Regards
Chris