作成日: 2025/03/03 最終更新日: 2025/03/07
文書種別
使用方法
詳細
- イベントハンドラを設定する
グラフ要素のクリックイベントをキャッチするために、イベントハンドラを設定します。 - 選択されたオブジェクトから値を取得する
イベント内で SelectedObject プロパティを使用して、選択されたオブジェクトから値を取得します。
'データの設定
FpSpread1.Sheets(0).Cells(0, 3).Value = "Q3"
FpSpread1.Sheets(0).Cells(0, 4).Value = "Q4"
FpSpread1.Sheets(0).Cells(1, 0).Value = "S1"
FpSpread1.Sheets(0).Cells(2, 0).Value = "S2"
FpSpread1.Sheets(0).Cells(3, 0).Value = "S3"
FpSpread1.Sheets(0).Cells(1, 1).Value = 50
FpSpread1.Sheets(0).Cells(2, 1).Value = 30
FpSpread1.Sheets(0).Cells(3, 1).Value = 20
FpSpread1.Sheets(0).Cells(1, 2).Value = 30
FpSpread1.Sheets(0).Cells(2, 2).Value = 15
FpSpread1.Sheets(0).Cells(3, 2).Value = 50
FpSpread1.Sheets(0).Cells(1, 3).Value = 10
FpSpread1.Sheets(0).Cells(2, 3).Value = 40
FpSpread1.Sheets(0).Cells(3, 3).Value = 25
FpSpread1.Sheets(0).Cells(1, 4).Value = 40
FpSpread1.Sheets(0).Cells(2, 4).Value = 20
FpSpread1.Sheets(0).Cells(3, 4).Value = 25
' データ領域およスタイルを指定してチャートを設定します
Dim range As New CellRange(0, 0, 4, 5)
Dim chart = FpSpread1.Sheets(0).AddChart(range, GetType(FarPoint.Win.Chart.StackedBarSeries), 250, 200, 300, 100, ChartViewType.View2D, True)
chart.Locked = True
AddHandler chart.Click, AddressOf Chart_Click
End Sub
Private Sub Chart_Click(sender As Object, e As EventArgs)
' ダブルクックした箇所のデータを取得
Dim chart = DirectCast(sender, SpreadChart)
If TypeOf chart.SelectedObject Is SeriesInfo Then
Dim si = DirectCast(chart.SelectedObject, SeriesInfo)
Dim series = DirectCast(si.Series, BarSeries)
Dim name = series.SeriesName
Dim x = series.CategoryNames(si.PointIndex)
Dim value = series.Values(si.PointIndex)
Console.WriteLine($"{name}, {x}, 値 = {value}")
End If
End Sub
■サンプルコード(C#)
private void Form1_Load(object sender, EventArgs e)
{
// データの設定
fpSpread1.Sheets[0].Cells[0, 1].Value = "Q1";
fpSpread1.Sheets[0].Cells[0, 2].Value = "Q2";
fpSpread1.Sheets[0].Cells[0, 3].Value = "Q3";
fpSpread1.Sheets[0].Cells[0, 4].Value = "Q4";
fpSpread1.Sheets[0].Cells[1, 0].Value = "S1";
fpSpread1.Sheets[0].Cells[2, 0].Value = "S2";
fpSpread1.Sheets[0].Cells[3, 0].Value = "S3";
fpSpread1.Sheets[0].Cells[1, 1].Value = 50;
fpSpread1.Sheets[0].Cells[2, 1].Value = 30;
fpSpread1.Sheets[0].Cells[3, 1].Value = 20;
fpSpread1.Sheets[0].Cells[1, 2].Value = 30;
fpSpread1.Sheets[0].Cells[2, 2].Value = 15;
fpSpread1.Sheets[0].Cells[3, 2].Value = 50;
fpSpread1.Sheets[0].Cells[1, 3].Value = 10;
fpSpread1.Sheets[0].Cells[2, 3].Value = 40;
fpSpread1.Sheets[0].Cells[3, 3].Value = 25;
fpSpread1.Sheets[0].Cells[1, 4].Value = 40;
fpSpread1.Sheets[0].Cells[2, 4].Value = 20;
fpSpread1.Sheets[0].Cells[3, 4].Value = 25;
// データ領域およスタイルを指定してチャートを設定します
var range = new CellRange(0, 0, 4, 5);
var chart = fpSpread1.Sheets[0].AddChart(range, typeof(FarPoint.Win.Chart.StackedBarSeries), 250, 200, 300, 100, ChartViewType.View2D, true);
chart.Locked = true;
chart.Click += new EventHandler(Chart_Click);
}
private void Chart_Click(object sender, EventArgs e)
{
// ダブルクリックした箇所のデータを取得
var chart = (SpreadChart)sender;
if (chart.SelectedObject is SeriesInfo si)
{
var series = (BarSeries)si.Series;
var name = series.SeriesName;
var x = series.CategoryNames[si.PointIndex];
var value = series.Values[si.PointIndex];
Console.WriteLine($"{name}, {x}, 値 = {value}");
}
}
<実行イメージ>