var chart = new UltraCategoryChart();
chart.SelectionMode = SeriesSelectionMode.SelectionColorFill;
chart.SelectionBehavior = SeriesSelectionBehavior.PerSeriesSingleSelect;
このトピックは、チャートの選択機能の概念を紹介し、利用可能なオプションの種類について説明します。この機能を使用すると、ユーザーはチャート内の単一または複数のシリーズを対話的に選択、ハイライト表示、アウトライン表示したり、その逆の選択を解除したりできます。これにより、提示されたデータをユーザーがより意味のある方法で操作するさまざまな可能性が提供されます。
デフォルトの動作 SelectionMode はオフになっており、次のいずれかのオプションを選択する必要があります。UltraCategoryChart では、いくつかの選択モードを使用できます:
Auto
None
Brighten
FadeOthers
GrayscaleOthers
FocusColorThickOutline
FocusColorOutline
SelectionColorThickOutline
SelectionColorOutline
FocusColorFill
SelectionColorFill
ThickOutline
Brighten は選択した項目をフェードアウトしますが、FadeOthers は反対の効果を引き起こします。GrayscaleOthers は FadeOthers と同様に動作しますが、シリーズの残りの部分にはグレー色を表示します。これは SelectionBrush 設定をオーバーライドすることに注意してください。SelectionColorOutline と SelectionColorThickOutline はシリーズの周囲に境界線を描画します。
併せて、どの項目を選択するかをより細かく制御できる 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);
}
}
}
このトピックの追加情報については、以下のトピックも合わせて参照してください。