场景
在利用ZedGraph时,常常有图形选项功能,设置曲线图相干属性后,
点击生存会设置另一个窗体的属性并刷新图。
结果
实现
在设置图形的选项的类中,声明委托和事件
- //委托的界说
- public delegate void ReloadPanelDelegete();
- //事件声明
- public static event ReloadPanelDelegete reloadPanelEvent;
复制代码
在当前窗体简直定按钮的点击事件中
将相干曲线图的Y轴以及X轴的相干属性存到xml设置文件中,然后调用方法
去刷新曲线图,使其重新加载。
- private void confirmbButton_Click(object sender, EventArgs e)
- {
- #region 获取X轴的属性并赋值给XAxisModel
- //对X轴的属性设置文件进行生存
- //根据控件的 System.Windows.Forms.Control.Name 属性搜刮控件并生成由所有匹配项组成的数组。
- //如果搜刮所有子控件,则为 true;否则为 false。
- XAxisModel xAxisModel = new XAxisModel();
- //获取标题
- RadioGroup radioGroupX = this.Controls.Find("radioGroupX", true)[0] as RadioGroup;
- xAxisModel.Title = radioGroupX.Text;
- //获取下限
- TextEdit minTextEditX = this.Controls.Find("minTextEditX", true)[0] as TextEdit;
- xAxisModel.Min = Double.Parse(minTextEditX.Text);
- //获取上限
- TextEdit maxTextEditX = this.Controls.Find("maxTextEditX", true)[0] as TextEdit;
- xAxisModel.Max = Double.Parse(maxTextEditX.Text);
- //获取颜色
- ColorEdit colorEditX = this.Controls.Find("colorEditX", true)[0] as ColorEdit;
- xAxisModel.Color = colorEditX.Text;
- #endregion
- #region 将X轴的属性存到设置文件中
- Boolean isWriteX = ChartOptionHelper.setXAxisAttribute(xAxisModel);
- #endregion
- #region 获取Y轴属性并赋值给List<YAxisModel>
- List<YAxisModel> yAxisModelList = new List<YAxisModel>();
- for (int i = 1; i <= yAxisCount; i++)
- {
- YAxisModel yAxisModel = new YAxisModel();
- //获取标题
- RadioGroup radioGroupY = this.Controls.Find("radioGroupY" + i, true)[0] as RadioGroup;
- yAxisModel.Title = radioGroupY.Text;
- //获取下限
- TextEdit minTextEditY = this.Controls.Find("minTextEditY" + i, true)[0] as TextEdit;
- yAxisModel.Min = Double.Parse(minTextEditY.Text);
- //获取上限
- TextEdit maxTextEditY = this.Controls.Find("maxTextEditY" + i, true)[0] as TextEdit;
- yAxisModel.Max = Double.Parse(maxTextEditY.Text);
- //获取颜色
- ColorEdit colorEditY = this.Controls.Find("colorEditY" + i, true)[0] as ColorEdit;
- yAxisModel.Color = colorEditY.Text;
- yAxisModelList.Add(yAxisModel);
- }
- #endregion
- #region 将Y轴的属性存到设置文件中
- Boolean isWriteY = ChartOptionHelper.setYAxisAttribute(yAxisModelList);
- #endregion
- #region 弹出对话框并设置点击确定之后的事件
- if (isWriteX == true && isWriteY == true)
- {
- if (this.Confirm("生存乐成") == DialogResult.OK)
- {
- //将是否第一次打开软件的标识量改为0,,下次打开直接读取设置文件
- Global.isFirstOpen = 0;
- if (reloadPanelEvent != null)
- {
- reloadPanelEvent();
- }
- this.Dispose();
- }
- }
- else
- {
- DevExpress.XtraEditors.XtraMessageBox.Show("生存失败", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
- }
- #endregion
- }
复制代码
然后在曲线图显示的窗体中订阅事件
Dialog.ChartOption.reloadPanelEvent += new
Dialog.ChartOption.ReloadPanelDelegete(reloadPanel);
此中左边的类是上面图形选项的类,右边的类是窗体显示的类
然后在窗体显示的类中新建图上面ReloadPanelDelegete的参数同名的方法reloadPanel实现曲线图的刷新。
注:
1.mypane是ZedGraph的面板,其默认是有一条Y轴对象的,为myPane.YAxis
2.如果要显示第二条Y轴,ZedGraph是默认存在第二条Y轴的,为myPane.Y2Axis,不外就是默认不显示,要使其显示,须要myPane.Y2Axis.IsVisible
= true;
3.如果是三条以上Y轴的话,就要利用
- myPane.YAxisList.Add(yAxisNew);
复制代码
加入其Y轴的list。
4.这里的需求是初次打开默认加载一条Y轴,以是在初次加载时判断
myPane.YAxisList.Count ==
1,其本身的List是否为1,为1则代表是初次加载,下次再设置并加载时,其list就不为1了。以是须要是设置,而不是再往list中新增了。
5.须要注意的是,如果显示4条Y轴的话,其myPane.YAxisList.Count为3,,一条是不算在内的。
6.刷新曲线图的代码
- this.zedGraphControl1.Invalidate();
复制代码
来源:https://www.cnblogs.com/badaoliumangqizhi/archive/2019/09/16/11525826.html |