Как в столбчатой ​​диаграмме с накоплением найти, на какую полосу я нажал?

На данный момент у меня есть форма с элементом управления tChart, который называется tChart:..

Private Sub txtChart1_Click(sender As System.Object, e As System.EventArgs) Handles txtChart1.Click


TChart1.Series.Clear()

Dim series1 As New Steema.TeeChart.Chart

Dim FirstLabel = New Label()
FirstLabel.Name = "FirstLabel.Name"
FirstLabel.Text = " FirstLabel.Text"

Dim SecondLabel = New System.Windows.Forms.Label()
Dim GridBand = New Steema.TeeChart.Tools.GridBand()

'Main bar 1
Dim BarSeries1 = New Steema.TeeChart.Styles.Bar()
BarSeries1.Brush.Color = System.Drawing.Color.FromArgb(192, 255, 48)
BarSeries1.MultiBar = Steema.TeeChart.Styles.MultiBars.Stacked
BarSeries1.Pen.Color = Color.FromArgb(48, 255, 192)
BarSeries1.Title = "barSeries1"
BarSeries1.XValues.DataMember = "X"
BarSeries1.XValues.Order = Steema.TeeChart.Styles.ValueListOrder.Ascending
BarSeries1.YValues.DataMember = "Bar"

BarSeries1.Add({123, 123, 123, 123, 123})

TChart1.Series.Add(BarSeries1)


'Main bar 2
Dim BarSeries2 = New Steema.TeeChart.Styles.Bar()
BarSeries2.Brush.Color = System.Drawing.Color.FromArgb(48, 255, 192)
BarSeries2.MultiBar = Steema.TeeChart.Styles.MultiBars.Stacked
BarSeries2.Pen.Color = Color.FromArgb(48, 255, 192)
BarSeries2.Title = "barSeries2"
BarSeries2.XValues.DataMember = "X"
BarSeries2.XValues.Order = Steema.TeeChart.Styles.ValueListOrder.Ascending
BarSeries2.YValues.DataMember = "Bar"

BarSeries2.Add({123, 123, 123, 123, 123})

TChart1.Series.Add(BarSeries2)


TChart1.Aspect.SmoothingMode = Drawing2D.SmoothingMode.HighQuality


End Sub

... в том же классе формы у меня есть этот обработчик событий...

Private Sub TChart1_MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles TChart1.MouseDown
mouseX.Text = e.X
mouseY.Text = e.Y

If TChart1.Series.Count > 0 Then

Dim CollectionOfBars As New List(Of String)

For idxSeries As Integer = 0 To TChart1.Series.Count - 1
Dim srs As Steema.TeeChart.Styles.Bar = TChart1.Series(idxSeries)

If srs.BarBounds.Contains(e.X, e.Y) Then
CollectionOfBars.Add(srs.TitleOrName)
End If

Next

txtCollisions.Text = Join(CollectionOfBars.ToArray, ", ")
End If

End Sub

... но то, что он делает, работает только для последней стопки стержней. Мне нужно что-то, что будет работать для всех баров.

Пожалуйста помоги.


person WonderWorker    schedule 29.08.2012    source источник
comment
Ознакомьтесь со следующим... «Поиск элемента серии, щелкнутого на диаграмме в vb 2008»> stackoverflow.com/questions/11316319/   -  person APrough    schedule 29.08.2012


Ответы (1)


Вы должны попробовать использовать метод Clicked:

If srs.Clicked(e.X, e.Y) <> -1 Then
CollectionOfBars.Add(srs.TitleOrName)
End If

вместо кода, который вы используете:

If srs.BarBounds.Contains(e.X, e.Y) Then
CollectionOfBars.Add(srs.TitleOrName)
End If

Также может быть более подходящим использовать событие ClickSeries для выполнения этой работы. Если это не поможет, не стесняйтесь, дайте мне знать.

person Narcís Calvet    schedule 29.08.2012