Winforn中實現ZedGraph自定義添加右鍵菜單項(附源碼下載):編程
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/100140716ui
在上面博客實現的自定義右鍵以及漢化右鍵的基礎上,怎樣實現將自帶的右鍵功能好比打印和頁面設置合併爲一個選項打印,並將上兩個合併爲其二級子菜單。spa
最終實現效果以下.net
注:code
博客主頁:
https://blog.csdn.net/badao_liumang_qizhi
關注公衆號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。 blog
首先在循環全部的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);
首先右鍵菜單事件從新訂閱ip
zgc.ContextMenuBuilder -= zgc_ContextMenuBuilder; //上下文菜單生成事件訂閱 zgc.ContextMenuBuilder += zgc_ContextMenuBuilder; //上下文菜單生成事件訂閱
而後在實現事件中get
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 }