我正在使用C#内置的Winforms Chart控件(System.Windows.Forms.DataVisualization.Charting.Chart),它具有内置功能,可以让用户选择一个范围 . 我找到了什么 .
光标启用如下:
var ca = chart1.ChartAreas["ChartArea1"].CursorX;
ca.CursorX.IsUserEnabled = true;
ca.CursorX.IsUserSelectionEnabled = true;
我知道当用户通过启用 ca.AxisX.ScaleView.Zoomable
选择范围时我可以使图表变焦,但我不希望图片改变:而是我使用图表作为显示信息的方式并让用户选择范围然后我做了一些额外的处理 .
我尝试连接到chart1.SelectionRangeChanged,并且每次更改范围时确实会触发 - 我似乎无法从CursorEventArg中获取选择范围 . 它有“ NewSelectionStart
" and " NewSelectionEnd
”字段,但那些是 NaN
,令人失望 . 我试着查看图表和轴的各种属性,但没有找到任何听起来很有希望的东西 .
进一步调查显示ChartArea.CursorX.SelectionStart属性听起来正是我需要的...除了它知道这是正常还是我遇到某种错误?
那么,我该如何确定用户选择的范围?
1 回答
好吧,好吧,我明白了 . 这是独家新闻:
有一个SelectionRangeChang * ing *事件,当该事件运行时,
ChartArea.CursorX.SelectionStart
和ChartArea.CursorX.SelectionEnd
字段中包含正确的值 . 但是用户还没有释放鼠标按钮,所以你应该只存储它们 .当用户释放鼠标按钮时,将触发SelectionRangeChang * ed *事件 . 不知何故,它的设计方式使SelectionStart和SelectionEnd重置为NaN(就像事件参数中的
NewSelectionStart
和NewSelectionEnd
字段一样) . 您现在要做的是使用您从其他事件处理程序中获取的值,因为您知道使用它们的时间是正确的 .所以你有它!希望这个答案能够让其他人免于浪费时间 .