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 ...
随机推荐
- 转自自己的关于落谷计数器【p1239】的题解
本蒟蒻写这道题用了两天半里大概五六个小时.(我太弱了) 然后这篇题解将写写我经历的沟沟坎坎,详细的分析一下, 但是由于它很长,因此一定还有多余的地方,比如说我的 预处理,可能比较多余.但是我觉得,信息 ...
- 深入理解 Spring Cloud 核心组件与底层原理
一.Spring Cloud核心组件:Eureka Netflix Eureka Eureka详解 1.服务提供者 2.服务消费者 3.服务注册中心 二.Spring Cloud核心组件:Ribbon ...
- CSS 选择器、字体/文本、背景
CSS的基本使用 直接写在标签内 <p style="color: red; font-size: 40px;">段落</p> 写在 style 标签内 & ...
- UiPath Platform注册 登录 及 访问 Orchestrator
相关步骤: 1.https://platform.uipath.com/portal_/cloudrpa 注册 及 登录 2. Login后 通过Services 连接 访问 UiPath Orche ...
- Java读取本地json文件
背景 之前一直在弄一个Java爬虫,将爬取的信息保存到了数据库中.但这毕竟是一个课程设计,在设计前端GUI,展示数据的时候最开始是直接通过select语句从数据库中查找的,但我担心交给老师后,老师还要 ...
- Android TeaScreenPopupWindow多类型筛选弹框
多类型筛选弹框.多数据筛选.多样化diy.单选or多选.必藏 (Multiple Type Screening Boxes, Multiple Data Screening, Diversified ...
- urllib模块使用笔记
文中所有python代码均使用的是python2.7实现,与python3并不兼容. UrlLib模块 urllib模块是适用于一个简单的网络数据获取和处理(不能处理有关验证和cookie等功能),官 ...
- 一文解读JSON (转)
JSON作为目前Web主流的数据交换格式,是每个IT技术人员都必须要了解的一种数据交换格式.尤其是在Ajax和REST技术的大行其道的当今,JSON无疑成为了数据交换格式的首选! 今天我们一起来学习一 ...
- VMware安装Linux提示此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态
问题: 原因: 这是由于没有开启虚拟技术导致的. 解决: 进入电脑BIOS设置,将"Inter Virtual Technology"设置为"Enabled", ...
- Java_map的key为自定义对象
首先自定义Key对象 import lombok.AllArgsConstructor; import lombok.Getter; import lombok.Setter; import java ...