Back to Devexpress

ChartControl.SelectedItems Property

windowsforms-devexpress-dot-xtracharts-dot-chartcontrol-9ff42edf.md

latest7.0 KB
Original Source

ChartControl.SelectedItems Property

Gets the collection of selected items (chart points and series) and business data objects (in the case of using a data source) of the ChartControl object.

Namespace : DevExpress.XtraCharts

Assembly : DevExpress.XtraCharts.v25.2.UI.dll

NuGet Package : DevExpress.Win.Charts

Declaration

csharp
[Browsable(false)]
public IList SelectedItems { get; }
vb
<Browsable(False)>
Public ReadOnly Property SelectedItems As IList

Property Value

TypeDescription
IList

A list which contains selected chart points, series and business data objects (in the case of using a data source).

|

Remarks

Use the SelectedItems property to get the collection of chart points and series.

Note

When the chart control is connected to a data source, the SelectedItems property returns a collection of business data objects (stored in the SeriesPoint.Tag property) instead of selected series points.

Example

This example shows how to obtain currently selected series points and show them in another chart. To do this, the ChartControl.SelectedItemsChanged event should be used.

In this example, you can choose the selection behavior ( Single , Multiple or Extended ) from the Selection Mode combo box. When any country is selected in the pie chart, you can see the population dynamics for each country in the bar chart. To cancel pie segment selection, choose None in the Selection Mode combo box.

In addition, this example demonstrates how to colorize each bar series point in the pie specific color using the ChartControl.CustomDrawSeriesPoint event.

csharp
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;
using DevExpress.XtraCharts;

namespace ChartSelection {

    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
        }

        PaletteEntry[] paletteEntries;

        private void Form1_Load(object sender, EventArgs e) {

            // Specify selection mode for the Pie chart.
            this.cbSelectionMode.Properties.Items.AddRange(Enum.GetValues(typeof(ElementSelectionMode)));
            this.cbSelectionMode.SelectedIndex = 2;
            pieChart.SeriesSelectionMode = SeriesSelectionMode.Point;

            // Handle the SelectedItemsChanged event for the Pie chart.                
            pieChart.SelectedItemsChanged += pieChart_SelectedItemsChanged;

            // Handle the CustomDrawSeriesPoint event for the Bar chart. 
            barChart.CustomDrawSeriesPoint += barChart_CustomDrawSeriesPoint;

            // Get palette entries of the pie chart.
            paletteEntries = pieChart.GetPaletteEntries(pieChart.Series[0].Points.Count);
        }

        private void cbSelectionMode_SelectedIndexChanged(object sender, EventArgs e) {
            pieChart.SelectionMode = (ElementSelectionMode)this.cbSelectionMode.SelectedItem;
        }

        private void pieChart_SelectedItemsChanged(object sender, SelectedItemsChangedEventArgs e) {
            barChart.Series[0].Points.Clear();

            foreach (SeriesPoint piePoint in pieChart.SelectedItems) {
                SeriesPoint barPoint = new SeriesPoint(piePoint.Argument, piePoint.Values[0]);
                barPoint.Tag = pieChart.Series[0].Points.IndexOf(piePoint);
                barChart.Series[0].Points.Add(barPoint);
            }
        }

        private void barChart_CustomDrawSeriesPoint(object sender, CustomDrawSeriesPointEventArgs e) {
            BarDrawOptions barOptions = e.SeriesDrawOptions as BarDrawOptions;
            int colorIndex = (int)e.SeriesPoint.Tag;
            barOptions.Color = paletteEntries[colorIndex].Color;
        }
    }
}
vb
Imports System
Imports System.Collections.Generic
Imports System.Drawing
Imports System.Windows.Forms
Imports DevExpress.XtraCharts

Namespace ChartSelection

    Partial Public Class Form1
        Inherits Form

        Public Sub New()
            InitializeComponent()
        End Sub

        Private paletteEntries() As PaletteEntry

        Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load

            ' Specify selection mode for the Pie chart.
            Me.cbSelectionMode.Properties.Items.AddRange(System.Enum.GetValues(GetType(ElementSelectionMode)))
            Me.cbSelectionMode.SelectedIndex = 2
            pieChart.SeriesSelectionMode = SeriesSelectionMode.Point

            ' Handle the SelectedItemsChanged event for the Pie chart.                
            AddHandler pieChart.SelectedItemsChanged, AddressOf pieChart_SelectedItemsChanged

            ' Handle the CustomDrawSeriesPoint event for the Bar chart. 
            AddHandler barChart.CustomDrawSeriesPoint, AddressOf barChart_CustomDrawSeriesPoint

            ' Get palette entries of the pie chart.
            paletteEntries = pieChart.GetPaletteEntries(pieChart.Series(0).Points.Count)
        End Sub

        Private Sub cbSelectionMode_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles cbSelectionMode.SelectedIndexChanged
            pieChart.SelectionMode = CType(Me.cbSelectionMode.SelectedItem, ElementSelectionMode)
        End Sub

        Private Sub pieChart_SelectedItemsChanged(ByVal sender As Object, ByVal e As SelectedItemsChangedEventArgs)
            barChart.Series(0).Points.Clear()

            For Each piePoint As SeriesPoint In pieChart.SelectedItems
                Dim barPoint As New SeriesPoint(piePoint.Argument, piePoint.Values(0))
                barPoint.Tag = pieChart.Series(0).Points.IndexOf(piePoint)
                barChart.Series(0).Points.Add(barPoint)
            Next piePoint
        End Sub

        Private Sub barChart_CustomDrawSeriesPoint(ByVal sender As Object, ByVal e As CustomDrawSeriesPointEventArgs)
            Dim barOptions As BarDrawOptions = TryCast(e.SeriesDrawOptions, BarDrawOptions)
            Dim colorIndex As Integer = CInt((e.SeriesPoint.Tag))
            barOptions.Color = paletteEntries(colorIndex).Color
        End Sub
    End Class
End Namespace

See Also

ChartControl Class

ChartControl Members

DevExpress.XtraCharts Namespace