バージョン

チャート選択

目的

このトピックは、チャートの選択機能の概念を紹介し、利用可能なオプションの種類について説明します。この機能を使用すると、ユーザーはチャート内の単一または複数のシリーズを対話的に選択、ハイライト表示、アウトライン表示したり、その逆の選択を解除したりできます。これにより、提示されたデータをユーザーがより意味のある方法で操作するさまざまな可能性が提供されます。

選択の設定

デフォルトの動作 SelectionMode はオフになっており、次のいずれかのオプションを選択する必要があります。UltraCategoryChart では、いくつかの選択モードを使用できます:

  • Auto

  • None

  • Brighten

  • FadeOthers

  • GrayscaleOthers

  • FocusColorThickOutline

  • FocusColorOutline

  • SelectionColorThickOutline

  • SelectionColorOutline

  • FocusColorFill

  • SelectionColorFill

  • ThickOutline

Brighten は選択した項目をフェードアウトしますが、FadeOthers は反対の効果を引き起こします。GrayscaleOthers は FadeOthers と同様に動作しますが、シリーズの残りの部分にはグレー色を表示します。これは SelectionBrush 設定をオーバーライドすることに注意してください。SelectionColorOutlineSelectionColorThickOutline はシリーズの周囲に境界線を描画します。

併せて、どの項目を選択するかをより細かく制御できる SelectionBehavior も利用できます。Auto のデフォルトの動作は PerSeriesAndDataItemMultiSelect です。

  • Auto

  • PerDataItemMultiSelect

  • PerDataItemSingleSelect

  • PerSeriesAndDataItemMultiSelect

  • PerSeriesAndDataItemSingleSelect

  • PerSeriesAndDataItemGlobalSingleSelect

  • PerSeriesMultiSelect

  • PerSeriesSingleSelect

PerSeriesAndDataItemGlobalSingleSelect を使用すると、すべてのカテゴリで一度に 1 つのシリーズを選択できます。一方、PerSeriesSingleSelect では、すべてのカテゴリで一度に同じシリーズを選択できます。

以下は、すべてのカテゴリにわたって単一のシリーズ選択を実装するコード例です。

C# の場合:

var chart = new UltraCategoryChart();
chart.SelectionMode = SeriesSelectionMode.SelectionColorFill;
chart.SelectionBehavior = SeriesSelectionBehavior.PerSeriesSingleSelect;

複数選択の構成

データ項目の選択では、名前にシリーズが含まれるように設定しない限り、チャート全体で選択できるシリーズは 1 つに制限されます (例: PerSeriesAndDataItemMultiSelect)。これには制約はありません。

その他の選択モードでは、さまざまな選択方法が提供されます。たとえば、PerDataItemMultiSelect とともに SelectionBehavior を使用すると、複数のシリーズが存在する場合にカテゴリ全体のすべてのシリーズが選択されますが、一度に選択できるカテゴリは 1 つだけであり、以前に選択されていたものはすべて選択解除されます。

シリーズが同じデータ ソースにバインドされていて、そのデータ ソースのレコード内のすべての項目を選択する場合は、「PerDataItemSingleSelect」 選択を使用します。たとえば、データ ソースのレコードにラベル、値 1、値 2 のフィールドがあり、シリーズ 1 が値 1 にバインドされ、シリーズ 2 が値 2 にバインドされている場合、どちらかのシリーズのポイントを選択すると、両方のシリーズから値が選択されます。

以下は、すべてのデータ項目とシリーズにわたって複数選択を実装するコード例です。

C# の場合:

var chart = new UltraCategoryChart();
chart.SelectionMode = SeriesSelectionMode.SelectionColorFill;
chart.SelectionBehavior = SeriesSelectionBehavior.PerSeriesAndDataItemMultiSelect;

アウトライン選択の構成

FocusBrush は、選択モードとともにシリーズのアウトラインのスタイルを設定するために適用できます。SelectionMode プロパティがフォーカス オプションの 1 つに設定されている場合に、選択されたシリーズが境界線付きで表示されます。

C# の場合:

var chart = new UltraCategoryChart();
this.ColumnChart.FocusBrush = Colors.Green;
chart.SelectionMode = SeriesSelectionMode.FocusColorThickOutline;
chart.SelectionBehavior = SeriesSelectionBehavior.PerSeriesAndDataItemMultiSelect;

プログラムによる選択

アプリケーションで選択をコードでプログラムしたり、起動時にチャート内の項目を選択したりする必要がある場合があります。これは、項目を SelectedSeriesCollection に追加することで実現できます。ChartSelection オブジェクトの 「Matcher」 プロパティ。

マッチャーは、データ チャートのように実際のシリーズにアクセスできない場合にチャートで使用するのに最適です。この場合、データ ソースに含まれるプロパティがわかっていれば、シリーズに含まれる ValueMemberPaths を推測できます。たとえば、データ ソースに Nuclear、Coal、Oil、Solar という数値プロパティがある場合、これらのプロパティごとにシリーズが作成されていることがわかります。Solar 値にバインドされたシリーズを強調表示する場合は、次のプロパティが設定されたマッチャーを使用して、ChartSelection オブジェクトを SelectedSeriesItems コレクションに追加できます。

Matcher.MemberPathType = "Value"
Matcher.MemberPath = "Solar"

次の例では、こちらにあるダミーデータを使用しています:

C# の場合:

    System.Windows.Forms.Timer timer;
    public Form1()
    {
        InitializeComponent();

        this.Load += Form1_Load;
    }

    private void Form1_Load(object? sender, EventArgs e)
    {
        this.ultraCategoryChart1.DataSource = new EnergyRenewableConsumption();
        this.ultraCategoryChart1.SelectionMode = SeriesSelectionMode.SelectionColorFill;
        this.ultraCategoryChart1.SelectionBehavior = SeriesSelectionBehavior.Auto;
        this.ultraCategoryChart1.SelectionBrush = new SolidBrush(Color.Orange);
        timer = new System.Windows.Forms.Timer();
        timer.Interval = 100;
        timer.Start();
        timer.Tick += Timer_Tick;
    }

    private void Timer_Tick(object? sender, EventArgs e)
    {
        addSelection();
        timer.Stop();
    }

    private void addSelection()
    {
        var chart = this.ultraCategoryChart1;
        if (chart.DataSource != null)
        {

            ChartSelection selection = new ChartSelection();
            selection.Item = ((EnergyRenewableConsumption)(this.ultraCategoryChart1.DataSource))[1];
            SeriesMatcher matcher = new SeriesMatcher();
            matcher.MemberPath = "Solar";
            matcher.MemberPathType = "ValueMemberPath";
            selection.Matcher = matcher;

            chart.SelectedSeriesItems.Add(selection);

            selection = new ChartSelection();
            selection.Item = ((EnergyRenewableConsumption)(this.ultraCategoryChart1.DataSource))[1];
            matcher = new SeriesMatcher();
            matcher.MemberPath = "Hydro";
            matcher.MemberPathType = "ValueMemberPath";

            selection.Matcher = matcher;

            chart.SelectedSeriesItems.Add(selection);
        }
    }
}

関連コンテンツ

トピック

このトピックの追加情報については、以下のトピックも合わせて参照してください。

トピック 目的

このトピックは、カテゴリ チャート コントロールの概要を提供します。