Winform中自定义添加ZedGraph右键实现设置所有Y轴刻度的上下限
场景
Winforn中实现ZedGraph自定义添加右键菜单项(附源码下载):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100140716
Winform中实现ZedGraph中曲线右键显示为中文:
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100115292
在上面两篇文章的基础上,已经实现的ZedGraph的右键效果

现在需要根据当前图形的Y轴的选项自动追加右键菜单,打开设置Y轴上下限的输入面板,进而设置Y轴的上下限。
比如当曲线图有两个Y轴,那么在右键时就会显示两个设置上下限的菜单。

点击相应的右键菜单时弹出设置上下限的窗口

将上限设置为150之后

注:
博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。
实现
在初始化ZedGraph的图形方法中绑定其右键菜单事件
zgc.ContextMenuBuilder -= zgc_ContextMenuBuilder; //上下文菜单生成事件订阅
zgc.ContextMenuBuilder += zgc_ContextMenuBuilder; //上下文菜单生成事件订阅
然后在右键菜单事件中
private static void zgc_ContextMenuBuilder(ZedGraphControl control, ContextMenuStrip menuStrip, Point mousePt, ZedGraphControl.ContextMenuObjectState objState)
{
#region 扩展上下文菜单 #region 设置上下限菜单 ToolStripMenuItem mnuYAxisUpLower = null;
for (int i = ; i < control.GraphPane.YAxisList.Count; i++)
{
YAxis yAxis = control.GraphPane.YAxisList[i];
mnuYAxisUpLower = new ToolStripMenuItem();
mnuYAxisUpLower.Name = "mnuYAxisUpLower" + i;
mnuYAxisUpLower.Text = String.Format("设置[{0}]上下限", yAxis.Title.Text);
mnuYAxisUpLower.Click += delegate(object sender, EventArgs e)
{
Dialog.FrmSetScaleMaxMin frmSetScaleMaxMin = new FrmSetScaleMaxMin(mnuYAxisUpLower.Text, yAxis.Scale.Max, yAxis.Scale.Min);
DialogResult result = frmSetScaleMaxMin.ShowDialog();
if (result == DialogResult.OK)
{
yAxis.Scale.Max = frmSetScaleMaxMin.Max;
yAxis.Scale.Min = frmSetScaleMaxMin.Min;
//更改上下限后刷新曲线图
control.AxisChange();
control.Refresh();
control.Invalidate();
}
};
menuStrip.Items.Add(mnuYAxisUpLower);
}
#endregion #endregion #region 汉化上下文菜单中的菜单项 foreach (ToolStripMenuItem item in menuStrip.Items)
{
switch (item.Name)
{
case "copied_to_clip":
item.Text = @"复制到剪贴板";
break;
case "copy":
item.Text = @"复制";
item.Click += item_Click;
break;
case "page_setup":
item.Text = @"页面设置...";
break;
case "print":
item.Text = @"打印...";
break;
case "save_as":
item.Text = @"另存图表...";
break;
case "set_default":
item.Text = @"恢复默认大小";
break;
case "show_val":
item.Text = @"显示节点数值";
break;
case "title_def":
item.Text = @"标题";
break;
case "undo_all":
item.Text = @"还原所有缩放";
break;
case "unpan":
item.Text = @"还原上一步缩放";
break;
case "unzoom":
item.Text = @"还原缩放";
break; }
} #endregion
}
上面代码包含了汉化右键菜单的代码,主要的是上面扩展右键菜单的代码部分
ToolStripMenuItem mnuYAxisUpLower = null;
for (int i = ; i < control.GraphPane.YAxisList.Count; i++)
{
YAxis yAxis = control.GraphPane.YAxisList[i];
mnuYAxisUpLower = new ToolStripMenuItem();
mnuYAxisUpLower.Name = "mnuYAxisUpLower" + i;
mnuYAxisUpLower.Text = String.Format("设置[{0}]上下限", yAxis.Title.Text);
mnuYAxisUpLower.Click += delegate(object sender, EventArgs e)
{
Dialog.FrmSetScaleMaxMin frmSetScaleMaxMin = new FrmSetScaleMaxMin(mnuYAxisUpLower.Text, yAxis.Scale.Max, yAxis.Scale.Min);
DialogResult result = frmSetScaleMaxMin.ShowDialog();
if (result == DialogResult.OK)
{
yAxis.Scale.Max = frmSetScaleMaxMin.Max;
yAxis.Scale.Min = frmSetScaleMaxMin.Min;
//更改上下限后刷新曲线图
control.AxisChange();
control.Refresh();
control.Invalidate();
}
};
menuStrip.Items.Add(mnuYAxisUpLower);
}
注:
首先循环所有的Y轴,并通过YAxis yAxis =
control.GraphPane.YAxisList[i]获取Y轴对象。然后设置菜单选项的名称、文本和点击事件。
在点击事件中弹出设置上下限窗口
窗口布局设置如下

然后修改窗体代码为
public partial class FrmSetScaleMaxMin : DevExpress.XtraEditors.XtraForm
{
#region 字段定义 private string _title = String.Empty; //保存要设置的坐标标题
private double _orignalMax = 0.0; //保存原坐标上限
private double _orignalMin = 0.0; //保存原坐标下限 #endregion #region 构造方法 public FrmSetScaleMaxMin(string title, double orignalMax, double orignalMin)
{
this._title = title;
this._orignalMax = orignalMax;
this._orignalMin = orignalMin;
InitializeComponent();
} #endregion #region 属性定义 /// <summary>
/// 设置后的坐标上限
/// </summary>
public double Max
{
get
{
double value = 0.0;
double.TryParse(this.txtMax.EditValue.ToString(), out value);
return value;
}
} /// <summary>
/// 设置后的坐标下限
/// </summary>
public double Min
{
get
{
double value = 0.0;
double.TryParse(this.txtMin.EditValue.ToString(), out value);
return value;
}
} #endregion #region 事件处理 /// <summary>
/// 窗体加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FrmSetScaleMaxMin_Load(object sender, EventArgs e)
{
this.Text = this._title;
this.txtMax.EditValue = this._orignalMax;
this.txtMin.EditValue = this._orignalMin;
} /// <summary>
/// 确定
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnOK_Click(object sender, EventArgs e)
{ this.DialogResult = System.Windows.Forms.DialogResult.OK;
} /// <summary>
/// 取消
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnCancel_Click(object sender, EventArgs e)
{
this.DialogResult = System.Windows.Forms.DialogResult.Cancel;
} #endregion }
点击确定后返回结果并设置Y轴刻度的最大和最小值,然后刷新曲线图。
最后将此右键菜单项添加到右键中去。
Winform中自定义添加ZedGraph右键实现设置所有Y轴刻度的上下限的更多相关文章
- Winform中自定义xml配置文件后对节点进行读取与写入
场景 Winform中自定义xml配置文件,并配置获取文件路径: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100522648 ...
- Echart自定义y轴刻度信息2
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- highchart 设置双Y轴坐标 双x轴坐标方法
我们的图表一旦引入了两种不同单位或者数量级相差很大的数据以后,这时候需要两种坐标对其进行计量. 下面以设置双Y轴为例, y轴坐标的参数设置成: yAxis: [{ title: { text: '坐标 ...
- Winform中自定义ZedGraph右键复制成功后的提示
场景 Winform中实现ZedGraph中曲线右键显示为中文: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100115292 ...
- 在Winform中屏蔽UnityWebPlayer的右键以及自带Logo解决方案整理
根据项目的需要,对已经完成的Unity三维模型以及游戏要使用Winform进行包装,也就是使用Winform做一层外壳.因此在展示Unity的时候使用到了UnityWebPlayer这个插件,对于此插 ...
- Winform中自定义xml配置文件,并配置获取文件路径
场景 在Winform程序中,需要将一些配置项存到配置文件中,这时就需要自定义xml的配置文件格式.并在一些工具类中去获取配置文件的路径并加载其内容. 关注公众号霸道的程序猿获取编程相关电子书.教程推 ...
- winform中DataGrid控件的宽度设置
最近修改一个win5.0的PDA程式,碰到一个问题.就是给DataGrid控件绑定数据的时候,这个控件的宽度不能调整,有时候数据较长,就显示不全.然后想在程式里自定义它的宽度,设置不成功.然后网上没找 ...
- Winform中设置多条Y轴时新增的Y轴刻度不显示问题解决
场景 Winform中实现ZedGraph的多条Y轴(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1001322 ...
- winform中dataGridView单元格根据值设置新值,彻底解决绑定后数据类型转换的困难
// winform中dataGridView单元格在数据绑定后,数据类型更改困难,只能迂回实现.有时候需要将数字变换为不同的文字描述,就会出现int32到string类型转换的异常,借助CellFo ...
随机推荐
- Python基础-day01-9
变量的命名 目标 标识符和关键字 变量的命名规则 0.1 标识符和关键字 1.1 标识符 标示符就是程序员定义的 变量名.函数名 名字 需要有 见名知义 的效果,见下图: 标示符可以由 字母.下划线 ...
- vue中子组件直接修改父组件prop属性bug
在有些时候,子组件直接修改父组件传来的 prop 对象的属性会出现不同步的问题. 比如,父组件传过来的一个对象 checkBoxObj: checkBoxObj:{ checked: false } ...
- C#基础——break ,continue, return用法
- Flutter报错记录
1.Could not find an option named "androidx". Run 'flutter -h' (or 'flutter -h') for avai ...
- 64-Weave 如何与外网通信?
上一节我们学习了 Weave 网络内部如何通信,今天讨论 Weave 如何与外界通信. weave 是一个私有的 VxLAN 网络,默认与外部网络隔离.外部网络如何才能访问到 weave 中的容器呢? ...
- 一文解读Docker (转)
最初的2小时,你会爱上Docker,对原理和使用流程有个最基本的理解,避免满世界无头苍蝇式找资料.本人反对暴风骤雨式多管齐下狂轰滥炸的学习方式,提倡迭代学习法,就是先知道怎么玩,有个感性认识,再深入学 ...
- 面试连环炮系列(八):服务器CPU飙升100%怎么排查
服务器CPU飙升100%怎么排查 执行"top"命令,查看当前进程CPU占用的实时情况,PID列是进程号,确定是哪个应用程序的问题. 如果是Java应用导致的,怎么定位故障原因 执 ...
- 关于css布局的记录(一) --table和flex布局
1.table方式布局 效果图: 直接用table等标签布局,table布局自动垂直居中 亦可用 display:table == <table>.display:table-cell = ...
- Spring Security OAuth2 开发指南(非最新版本)
请注意哈,本文翻译的时候,官网的的版本和本文翻译的时候是一一对应的. 但是官网已经更新文档和概念了,因此和本文翻译的就不在是同一个范围了. 因此我已经将标题修改为(非最新版本),各位老铁直接看官网就可 ...
- GitLab基本设置-新增用户
场景 Docker Compose部署GitLab服务,搭建自己的代码托管平台(图文教程): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/det ...