以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]图表X轴字符获取 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=194664) |
-- 作者:azlm100 -- 发布时间:2025/1/3 14:22:00 -- [求助]图表X轴字符获取 各位大神,想请教一下。怎么获取鼠标点击上方图表的柱状的X轴的字符。{技术部,品质管理部,业务部,制造部}这4个字符。 If c1.CoordToDataIndex(e.x, e.y ,s ,p) Then \'如果鼠标位置存在有效的图序和数据点 Dim Seriess As WinForm.ChartSeries = c1.SeriesList(s) \'获得鼠标位置的图序 msg = p End If 这个只能获取点位,1,2,3,4这种。 [此贴子已经被作者于2025/1/3 14:22:55编辑过]
|
-- 作者:有点蓝 -- 发布时间:2025/1/3 14:42:00 -- 按顺序取字符不就行了,1=技术部,2=品质管理部 |
-- 作者:azlm100 -- 发布时间:2025/1/3 14:56:00 -- 这个部的少,我就是用的这种方式,但是制造部下面有差不多20个柱状。。。怎么弄。 |
-- 作者:有点蓝 -- 发布时间:2025/1/3 15:32:00 -- 生成图表的代码发上来 |
-- 作者:azlm100 -- 发布时间:2025/1/4 8:05:00 -- Dim Chart As WinForm.Chart \'定义一个图表变量 Dim Series As WinForm.ChartSeries \'定义一个图系变量 If c1.CoordToDataIndex(e.x, e.y ,s ,p) Then \'如果鼠标位置存在有效的图序和数据点 Dim Seriess As WinForm.ChartSeries = c1.SeriesList(s) \'获得鼠标位置的图序 msg = p End If Dim cus As String Dim cs As String Select Case msg Case 0 cus = "技术部" Case 1 cus = "品质管理部" Case 2 cus = "业务部" Case 3 cus = "制造部" End Select e.Form.Controls("Label6").text = cus \'获取鼠标点的部门 Dim lst4 As List(Of String) = dtt.GetValues("deptname2", "topdeptnamexx = \'" & cus & "\' and deptname2 Is not null ") \'获得课名称集合 Chart = e.Form.Controls("Chart4") \' 引用窗口中的图表 Chart.VisualEffect = True \'加上这一行,让你的图表更漂亮 Chart.ChartType = ChartTypeEnum.Bar \'设置图表类型 Chart.SeriesList.Clear() \'清除图表原来的图系 chart.AxisX.ClearValueLabel chart.AxisY.ClearValueLabel Series = Chart.SeriesList.Add() \'增加一个图系 Dim d As Integer = 0 Series.Length = lst4.Count \'图系的数据点数等于表的行数 Series.Text = "计划加班总数" For k As Integer = 0 To lst4.Count - 1 \'指定每个数据点的位置 Dim Averageovertime As Integer = 0 Dim dhi As Integer = 0 Series.X(k) = k \'指定水平坐标 Dim drs As List(of DataRow) drs = dtt.Select("[deptname2] = \'" & lst4(k) & "\'and [bd] = \'" & dt3 & "\'") If drs.Count > 0 Then For Each dttr As DataRow In drs Averageovertime = dttr("otsum") * dttr("people") + Averageovertime \'统计出公司总计划加班总数 Next If Averageovertime > 0 Then Series.Y(k) = CInt(Format(Averageovertime, "0")) If Averageovertime > d Then d = Averageovertime End If Else Series.Y(k) = 0 End If Else Series.Y(k) = 0 End If Chart.AxisX.SetValueLabel(k, lst4(k)) \'指定字符表示 Next Series.TooltipText = "{#YVAL}" Series.DataLabelText = "{#YVAL}" series.DataLabelForeColor = Color.blue Series.DataLabelCompass =LabelCompassEnum.North 这里只有4个部,还能用这种转换方式来获取点击部门字符来统计人数信息。 后面到了课就有20几个了。。。 |
-- 作者:有点蓝 -- 发布时间:2025/1/4 9:51:00 -- 5楼是点击1楼的图后生成的子图吧。我要的是1楼的图表生成的代码!
|
-- 作者:有点蓝 -- 发布时间:2025/1/4 10:22:00 -- 如果技术部这些内容也是使用GetValues获取的,那么一样从GetValues里按索引取内容即可 |
-- 作者:azlm100 -- 发布时间:2025/1/4 10:59:00 -- 这边都是使用GetValues来获取字符的,我现在是需要鼠标点击最下面第三个图表时继续出第四个图表,第三个图X轴太多点,而且点击第二个图时第三个图都会不同。所以无法继续使用定位来转换X轴的字符。如果可以通过鼠标几点柱状来直接获取到该柱状的X轴字符是最简单了。不过查了好久帮助好像没有类似的代码。 |
-- 作者:azlm100 -- 发布时间:2025/1/4 11:00:00 -- |
-- 作者:有点蓝 -- 发布时间:2025/1/4 11:10:00 -- 【都是使用GetValues来获取字符】那全部一样从GetValues里按索引取值就行了 |