可交互的单元格图表
本节内容可以参考CaseStudy目录下的文件:单元格图表.Table
我们可以让单元格图表活起来,让其对用户的操作做出响应。
要设计可交互的图表,需要用到Table的两个成员,分别是:
MouseChartIndex
这是一个整数型属性,可以返回鼠标所在位置的图表区域序号,例如当用鼠标单击单元格图表中的某个图柱时,可以通过此属性知道单击的是第几个图柱。
MouseHoverCell
这是一个事件,当鼠标进入或退出悬停状态时执行(所谓悬停,就是鼠标停在某个位置不动),此事件的e参数有个属性Hovering,进入悬停转态时,此属性返回True,退出悬停状态时,此属性返回False。
示例四
假定要生成下图所示的柱状图,要求:
1、鼠标悬停在某个图柱时,能显示该图柱的数值以及对应的月份。
2、双击某个图柱时,能跳转到对应的列。
过程很简单,步骤:
1、DrawCell事件写入如下代码,用于生成图表:
If
e.Col.Name
= "走势" Then
Dim cns()
As String = {"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"}
For
Each cn
As String
In cns
e.Chart.AddValues(e.Row(cn))
Next
e.Chart.ChartType
= 1
e.Chart.SeriesColor
= Color.CadetBlue
e.Chart.ShowHigh
= True
e.Chart.HighMarkerColor
= Color.Orange
e.DrawChart()
End
If
2、MouseHoverCell事件写入如下代码,用于当鼠标悬停在某个图柱时,显示该图柱的数值和对应的月份:
If
e.Col.Name
= "走势" Then
If e.Hovering
Then
'如果是进入悬停状态,,则显示信息
Dim cns()
As String =
{"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"}
Dim idx
As Integer =
e.Table.MouseChartIndex
'获取鼠标位置的图柱序号
If idx
>= 0 Then
Dim
cn As String
= cns(idx)
e.Table.ShowToolTip(e.Row(cn)
& "("
& cn
& ")",e.Row,e.Col)
End If
Else
'如果是退出悬停状态,则隐藏信息
e.Table.HideToolTip()
End
If
End
If
3、最后在DoubleClick事件写入代码,用于双击图柱跳转到对应的列:
If
e.Col.Name
= "走势" Then
e.Cancel
= True
Dim cns()
As String =
{"一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"}
Dim idx
As Integer =
e.Table.MouseChartIndex
'获取鼠标位置的图柱序号
If idx
>= 0 Then
Dim cn
As String =
cns(idx)
e.Table.Select(e.Table.RowSel,
e.Table.Cols(cn).Index)
End
If
End
If