ZedGraph怎样实现将图形右键菜单的打印和页面设置合并为打印的二级子菜单

场景

Winforn中实现ZedGraph自定义添加右键菜单项(附源码下载):

https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100140716

在上面博客实现的自定义右键以及汉化右键的基础上,怎样实现将自带的右键功能比如打印和页面设置合并为一个选项打印,并将上两个合并为其二级子菜单。

最终实现效果如下

 

注:

博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载。

实现

首先在循环所有的menuStrip.Items时候,通过item.Visible = false;将原来的打印与打印页面设置的item禁用。

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 = @"打印页面设置";
                        item.Visible = false;
                        break;
                    case "print":
                        item.Text = @"打印";
                        item.Visible = false;
                        break;
                    case "save_as":
                        item.Text = @"另存图表...";
                        break;
                    case "set_default":
                        item.Text = @"恢复默认大小";
                        break;
                    case "show_val":
                        item.Text = @"显示节点数值";
                        item.Visible = false;
                        break;
                    case "title_def":
                        item.Text = @"标题";
                        break;
                    case "undo_all":
                        item.Text = @"还原所有缩放";
                        item.Visible = false;
                        break;
                    case "unpan":
                        item.Text = @"还原上一步缩放";
                        item.Visible = false;
                        break;
                    case "unzoom":
                        item.Text = @"还原缩放";
                        item.Visible = false;
                        break;
                    case "x_title_def":
                        item.Text = @"X 轴";
                        break;
                    case "y_title_def":
                        item.Text = @"Y 轴";
                        break;
                }
            }

然后在扩展右键菜单时自定义二级子菜单效果,并在子菜单中执行ZedControl的自带的右键事件。

     ToolStripMenuItem mnuDirectPrint = new ToolStripMenuItem("直接打印");
            mnuDirectPrint.Name = "directPrint";
            mnuDirectPrint.Text = "直接打印";
            mnuDirectPrint.Click += delegate(object sender, EventArgs e)
            {
                control.DoPrint();
            };

            ToolStripMenuItem mnuPrintPageSet = new ToolStripMenuItem("打印页面设置");
            mnuPrintPageSet.Name = "printPageSet";
            mnuPrintPageSet.Text = "打印页面设置";
            mnuPrintPageSet.Click += delegate(object sender, EventArgs e)
            {
                control.DoPageSetup();
            };

            ToolStripMenuItem mnuPrint = new ToolStripMenuItem();
            mnuPrint.Name = "mnuPrint";
            mnuPrint.Text = "打印";
            mnuPrint.DropDownItems.Add(mnuDirectPrint);
            mnuPrint.DropDownItems.Add(mnuPrintPageSet);

           
            menuStrip.Items.Add(mnuPrint);

完整示例代码

首先右键菜单事件重新订阅

            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 mnuDirectPrint = new ToolStripMenuItem("直接打印");
            mnuDirectPrint.Name = "directPrint";
            mnuDirectPrint.Text = "直接打印";
            mnuDirectPrint.Click += delegate(object sender, EventArgs e)
            {
                control.DoPrint();
            };

            ToolStripMenuItem mnuPrintPageSet = new ToolStripMenuItem("打印页面设置");
            mnuPrintPageSet.Name = "printPageSet";
            mnuPrintPageSet.Text = "打印页面设置";
            mnuPrintPageSet.Click += delegate(object sender, EventArgs e)
            {
                control.DoPageSetup();
            };

            ToolStripMenuItem mnuPrint = new ToolStripMenuItem();
            mnuPrint.Name = "mnuPrint";
            mnuPrint.Text = "打印";
            mnuPrint.DropDownItems.Add(mnuDirectPrint);
            mnuPrint.DropDownItems.Add(mnuPrintPageSet);

           
            menuStrip.Items.Add(mnuPrint);

            #endregion

            #region 缩放
            ToolStripMenuItem mnuReductLast = new ToolStripMenuItem("还原上一步缩放");
            mnuReductLast.Name = "mnuReductLast";
            mnuReductLast.Text = "还原上一步缩放";
            mnuReductLast.Click += delegate(object sender, EventArgs e)
            {
                control.ZoomOut(control.GraphPane);
            };

            ToolStripMenuItem mnuReductAll = new ToolStripMenuItem("还原所有缩放");
            mnuReductAll.Name = "mnuReductAll";
            mnuReductAll.Text = "还原所有缩放";
            mnuReductAll.Click += delegate(object sender, EventArgs e)
            {
                control.ZoomOutAll(control.GraphPane);
            };

            ToolStripMenuItem mnuReduct = new ToolStripMenuItem();
            mnuReduct.Name = "mnuReduct";
            mnuReduct.Text = "缩放";
            mnuReduct.DropDownItems.Add(mnuReductLast);
            mnuReduct.DropDownItems.Add(mnuReductAll);


            menuStrip.Items.Add(mnuReduct);

            #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 = @"打印页面设置";
                        item.Visible = false;
                        break;
                    case "print":
                        item.Text = @"打印";
                        item.Visible = false;
                        break;
                    case "save_as":
                        item.Text = @"另存图表...";
                        break;
                    case "set_default":
                        item.Text = @"恢复默认大小";
                        break;
                    case "show_val":
                        item.Text = @"显示节点数值";
                        item.Visible = false;
                        break;
                    case "title_def":
                        item.Text = @"标题";
                        break;
                    case "undo_all":
                        item.Text = @"还原所有缩放";
                        item.Visible = false;
                        break;
                    case "unpan":
                        item.Text = @"还原上一步缩放";
                        item.Visible = false;
                        break;
                    case "unzoom":
                        item.Text = @"还原缩放";
                        item.Visible = false;
                        break;
                    case "x_title_def":
                        item.Text = @"X 轴";
                        break;
                    case "y_title_def":
                        item.Text = @"Y 轴";
                        break;
                }
            }

            #endregion
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
ZedGraph winform打印 统计报表 打印组建 统计组件 源代码.NET2.0 ZedGraphV515是C#编写的.NET类库,提供了用户控件和web控件。它可以创建2D的线性图、条形图和饼图。 它功能完整且有详细的功能自定义。 基于LGPL协议开源,.NET 2.0 C#源代码)它的思路清淅,所以非常容易就上手. 几个注意点: 图片的保存路径设置:RenderedImagePath属性中设置,程序对该文件夹应该是有写和修改权限的 图片的输出格式:OutputFormat属性中设置,Png的推荐,比较清晰。 Chart ChartBorder 图表区域的边框设置 ChartFill 图表区域的背景填充 Legend 图表的注释标签显示设置项目,一组数据对应一种颜色的注释 IsHStack 当有多个显示项的时候设置Y轴数据是叠加的还是分开的 Xaxis 图表区域的X轴相关信息设置 AxisColor 坐标轴颜色 Cross 坐标的原点,可以设置坐标的偏移程度 CrossAuto 原点自动设置:True的话Cross的设置就无效了。 FontSpec X轴标题字体相关信息 Angle X轴标题字体显示时候的角度,0为水平 90为垂直 Fill X轴标题字体填充信息 ColorOpacity 透明度 IsScaled 设置X轴标题字体显示大小是否根据图的比例放大缩小 RangeMax 填充时候的最大倾斜度(有过渡色,没试过) RangeMin 填充时候的最小倾斜度(有过渡色,没试过) StringAlignment X轴标题字体排列(不清楚,没试过) IsOmitMag 是否显示指数幂(10次方,没试过,似乎与IsUseTenPower有关系) IsPreventLabelOverlap 坐标值显示是否允许重叠,如果False的话,控件会根据坐标值长度自动消除部分坐标值的显示状态 IsShowTitle X轴标题是否显示 IsTicsBetweenLabels 两个坐标值之间是否自动显示分隔标志 IsUseTenPower 是否使用10次幂指数 IsVisible 是否显示X轴

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

霸道流氓气质

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值