Foxtable(狐表)用户栏目专家坐堂 → [求助]图表事件提示错误


  共有703人关注过本帖树形打印复制链接

主题:[求助]图表事件提示错误

帅哥哟,离线,有人找我吗?
lgj716330
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1385 积分:10673 威望:0 精华:0 注册:2013/11/8 15:27:00
[求助]图表事件提示错误  发帖心情 Post By:2024/10/3 21:50:00 [只看该作者]

图表事件

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20241003214152.png
图片点击可在新窗口打开查看

Dim cht As WinForm.Chart = e.Sender
If e.SeriesIndex >= 0 AndAlso e.PointIndex >= 0 Then
    Dim info As String
    If ModifierKey = Keys.Control Then '如果按下了Ctrl键
        Dim r As Row = Tables("图表测试数据").rows(e.PointIndex)
        info = r("月份")
        For Each cl As Col In Tables("图表测试数据").Cols
            If cl.Name <> "年份" And cl.Name <> "月份" And cl.Name <> "品牌" And cl.Name <> "销售增长" Then
                info = info & vbCrLf & cl.Name & ":" & r(cl.Name) 
            End If 
        Next 
    Else
        Dim nm As String = cht.SeriesList(e.SeriesIndex).Y.DataField
        info = "期间:" & nm
        For Each r As Row In Tables("图表测试数据").Rows
            info = info & vbCrLf & r("月份") & ":" & r(nm)
        Next
    End If
    If info > "" Then
      e.ToolTipText = info
    End If
End If

生成图表后,鼠标悬浮图上时会跳出如下错误,不知问题在哪里

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20241003214916.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110494 积分:562348 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/10/5 20:40:00 [只看该作者]

图表使用什么代码生成的?

 回到顶部
帅哥哟,离线,有人找我吗?
lgj716330
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1385 积分:10673 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2024/10/5 20:54:00 [只看该作者]

Dim Chart As WinForm.Chart '定义一个图表变量
Dim Series As WinForm.ChartSeries '定义一个图系变量
Dim t As Table = Tables("图表测试数据") '定义一个变量t引用数据表
Chart = e.Form.Controls("Chart2") ' 引用窗口中的图表
Chart.ChartType = ChartTypeEnum.Bar '图表类型改为Bar(条形)
Chart.SeriesList.Clear() '清除图表原来的图系
Chart.AxisY.Min = 0 '指定Y轴的最小值
Chart.AxisY.Max = 150 '指定Y轴的最大值
For Each c As Col In t.Cols
    If c.Name <> "年份" And c.Name <> "月份" And c.Name <> "品牌" And c.Name <> "销售增长" Then
        Series = Chart.SeriesList.Add() '增加一个图系
        Series.Text = c.Name '设置图系的标题
        Series.Length = t.Rows.Count '设置图系的长度
        For r As Integer = 0 To t.Rows.Count - 1
            Series.X(r) = r
            Series.Y(r) = t.Rows(r)(c.Name)
        Next
    End If
Next
For r As Integer = 0 To t.Rows.Count - 1
    Chart.AxisX.SetValueLabel(r, t.Rows(r)("月份") & "月份") '指定字符表示,设置X轴数值的字符表示
Next
Chart.AxisX.AnnoWithLabels = True '启用字符标示
Chart.VisualEffect = True '加上这一行,让你的图表更漂亮
Chart.LegendVisible = True '显示图列
Chart.LegendCompass = CompassEnum.South '图列显示在南方(底端)
'设置数据标示
For cc As Integer = 0 To Chart.SeriesList.count - 1
    Chart.SeriesList(cc).DataLabelText = "{#YVAL}" '显示数据标点的值
    Chart.SeriesList(cc).DataLabelCompass = LabelCompassEnum.North '设置数据标点值的位置
Next 
'清除网格线
Chart.AxisX.GridMajorVisible = False
Chart.AxisY.GridMajorVisible = False
'设置图表区域样式2(去掉全部边框,并将全部背景设置为透明)
Chart.Style.Border.BorderStyle = C1Chart.BorderStyleEnum.None
Chart.ChartAreaStyle.Border.BorderStyle = C1Chart.BorderStyleEnum.None
Chart.Style.BackColor = Color.Transparent
Chart.ChartAreaStyle.BackColor = Color.Transparent
Chart.PlotAreaStyle.BackColor = Color.Transparent
'生成图表标题
Dim fnt As New Font("黑体", 18, FontStyle.Bold) '设置图表标题字体
Chart.HeaderText = "品牌各品类销售占比" '设置图表上标题
Chart.HeaderFont = fnt

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110494 积分:562348 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/10/5 21:20:00 [只看该作者]

和帮助的用法不一样。上面的代码没有使用绑定的方式使用,【cht.SeriesList(e.SeriesIndex).Y.DataField】是不会有内容的,无法使用这种方式获取对应的列

 回到顶部
帅哥哟,离线,有人找我吗?
lgj716330
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1385 积分:10673 威望:0 精华:0 注册:2013/11/8 15:27:00
  发帖心情 Post By:2024/10/5 22:37:00 [只看该作者]

图表事件中示例二,按Ctrl键悬停:提示信息一闪而过,在哪里增加显示的时间,如像示例三cht.ShowToolTip(info, e.X, e.Y, 5000) '在鼠标位置显示信息,5秒后自动关闭

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110494 积分:562348 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/10/6 11:04:00 [只看该作者]

没有办法,只有示例三这种用法才可以指定显示时间

 回到顶部