场景

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轴刻度的上下限的更多相关文章

  1. Winform中自定义xml配置文件后对节点进行读取与写入

    场景 Winform中自定义xml配置文件,并配置获取文件路径: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100522648 ...

  2. Echart自定义y轴刻度信息2

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  3. highchart 设置双Y轴坐标 双x轴坐标方法

    我们的图表一旦引入了两种不同单位或者数量级相差很大的数据以后,这时候需要两种坐标对其进行计量. 下面以设置双Y轴为例, y轴坐标的参数设置成: yAxis: [{ title: { text: '坐标 ...

  4. Winform中自定义ZedGraph右键复制成功后的提示

    场景 Winform中实现ZedGraph中曲线右键显示为中文: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100115292 ...

  5. 在Winform中屏蔽UnityWebPlayer的右键以及自带Logo解决方案整理

    根据项目的需要,对已经完成的Unity三维模型以及游戏要使用Winform进行包装,也就是使用Winform做一层外壳.因此在展示Unity的时候使用到了UnityWebPlayer这个插件,对于此插 ...

  6. Winform中自定义xml配置文件,并配置获取文件路径

    场景 在Winform程序中,需要将一些配置项存到配置文件中,这时就需要自定义xml的配置文件格式.并在一些工具类中去获取配置文件的路径并加载其内容. 关注公众号霸道的程序猿获取编程相关电子书.教程推 ...

  7. winform中DataGrid控件的宽度设置

    最近修改一个win5.0的PDA程式,碰到一个问题.就是给DataGrid控件绑定数据的时候,这个控件的宽度不能调整,有时候数据较长,就显示不全.然后想在程式里自定义它的宽度,设置不成功.然后网上没找 ...

  8. Winform中设置多条Y轴时新增的Y轴刻度不显示问题解决

    场景 Winform中实现ZedGraph的多条Y轴(附源码下载): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1001322 ...

  9. winform中dataGridView单元格根据值设置新值,彻底解决绑定后数据类型转换的困难

    // winform中dataGridView单元格在数据绑定后,数据类型更改困难,只能迂回实现.有时候需要将数字变换为不同的文字描述,就会出现int32到string类型转换的异常,借助CellFo ...

随机推荐

  1. Caffe源码-Layer类

    Layer类简介 Layer是caffe中搭建网络的基本单元,caffe代码中包含大量Layer基类派生出来的各种各样的层,各自通过虚函数 Forward() 和 Backward() 实现自己的功能 ...

  2. python连接数据库使用SQLAlchemy

    参考python核心编程 ORM(Object Relational Mapper),如果你是一个更愿意操作Python对象而不是SQL查询的程序员,并且仍然希望使用关系型数据库作为你的后端,那么你可 ...

  3. NPOI 获取单元格的值

    1.日期格式的坑 var cell = row.GetCell(i);//获取某一个单元格 var value = ""; if (cell != null) { if (cell ...

  4. jTopo HTML5 Canvas 画图组件

    jTopo是什么? jTopo(Javascript Topology library)是一款完全基于HTML5 Canvas的关系.拓扑图形化界面开发工具包. jTopo关注于数据的图形展示,它是面 ...

  5. Spring-web-security Issue (Access is denied. User must have one of the these roles: ACTUATOR)

    前提条件(Prerequisite) 1.你的项目里引进了Spring web security <dependency> <groupId>org.springframewo ...

  6. Android 状态栏通知 Notification

    private NotificationManager manager; private Notification.Builder builder; @Override protected void ...

  7. centos安装redis并开启多个redis实例

    1.下载安装包       下载地址 :  http://download.redis.io/releases/,去里面找对应的版本下载        例如  wget http://download ...

  8. Unity Ruby's Adventure 第二步

    加载游戏资源(已注册Unity) Step1:打开Unity 依次点击 Window>Asset Store(资源商店) Step2:搜索资源 Ruby's Adventure Step3:购买 ...

  9. IT兄弟连 HTML5教程 DIV+CSS网页标准化布局 小结及习题

    小结 DIV+CSS布局页面的优势:表现和内容相分离.代码简洁,提高页面浏览速度.易于维护和改版.提高搜索引擎对网页的索引效率.每个HTML元素都可以看作一个区块,类似于装了东西的盒子,称为盒子模式. ...

  10. 初窥R(基本说明、获取帮助、工作空间、输入输出、包)

    本篇简要介绍使用R的一些基本概念,包括基本说明.获取帮助.工作空间.输入输出,每个知识点中都会通过一个例子来练习. 一.R基本情况说明 1.R是一种区分大小写的解释性语言. 2.控制台默认使用命令提示 ...