⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mymenu.cs.svn-base

📁 串口通信上位机源程序,可以修改串口,波特率,自动保存接收的数据.方便修改成个性化的串口通信工具
💻 SVN-BASE
字号:
using System;
using System.Drawing;
using System.Windows.Forms;

namespace GuangMa
{
	/// <summary>
	/// MyMenu 的摘要说明。
	/// </summary>
	public class MyMenu:System.Windows.Forms.Panel
	{
		private ContextMenu contextMenu;
		private int selectedIndex = 0;
		private string Title;
		public delegate void MenuSelectedEventHandler(object sender, MenuItem e);
		public event MenuSelectedEventHandler MenuSelected;
		public MyMenu(ContextMenu _Menu, string _Title)
		{
			contextMenu = _Menu;
			Title = _Title;
			if(contextMenu.MenuItems.Count > 0)
			{
				contextMenu.MenuItems[selectedIndex].Checked = true;
			}
			this.Size = new Size(240,214);
		}

		protected void OnMenuSelected(object sender, MenuItem e)
		{
			if (this.MenuSelected != null) this.MenuSelected(sender, e);
		}

		protected override void OnPaint(PaintEventArgs e)
		{
			base.OnPaint (e);
			int i = 35;

			DrawMenuTitle(e, Title);
			foreach(MenuItem item in contextMenu.MenuItems)
			{
				if(item.Checked)
				{
					DrawMenuItem(e, item.Text, i, true);
				}
				else
				{
					DrawMenuItem(e, item.Text, i, false);
				}
				i += 25;
			}
		}

		protected override void OnKeyDown(KeyEventArgs e)
		{
			base.OnKeyDown (e);
			if(e.KeyCode.Equals(Keys.Down))
			{
				if(selectedIndex < contextMenu.MenuItems.Count-1)
				{
					selectedIndex ++;
				}
				else
				{
					selectedIndex = 0;
				}
			}

			if(e.KeyCode.Equals(Keys.Up))
			{
				if(selectedIndex > 0)
				{
					selectedIndex --;
				}
				else
				{
					selectedIndex = contextMenu.MenuItems.Count - 1;
				}
			}

			if(e.KeyCode.Equals(Keys.Down) || e.KeyCode.Equals(Keys.Up))
			{

				foreach(MenuItem item in contextMenu.MenuItems)
				{
					item.Checked = false;
				}

				contextMenu.MenuItems[selectedIndex].Checked = true;
				this.Refresh();
			}

			if(e.KeyCode.Equals(Keys.Enter))
			{
				if(contextMenu.MenuItems[selectedIndex].MenuItems.Count > 0)
				{
					int count = contextMenu.MenuItems.Count;
				}
				else
				{
					this.MenuSelected(this, contextMenu.MenuItems[selectedIndex]);
				}
			}
		}

		//绘制菜单标题
		private void DrawMenuTitle(PaintEventArgs e, string title)
		{
			Font font = new Font("宋体", 18, FontStyle.Bold);
			SizeF size = e.Graphics.MeasureString(title, font);
			e.Graphics.DrawString(title, font,new SolidBrush(Color.Blue),new RectangleF((240-size.ToSize().Width)/2, 0, size.ToSize().Width, size.ToSize().Height));
		}

		//绘制菜单项目
		private void DrawMenuItem(PaintEventArgs e, string s, int top, bool showBG)
		{
			int left   = 10;   //绘制区域左边距离
			int width  = 220;  //绘制区域的宽度
			int height = 22;   //绘制区域的高度

			Color BackColor = Color.Blue;  //选取项目的背景颜色
			Color ForeColor = Color.Blue;  //未选取项目文字颜色
			Color SelectedForeColor = Color.White;  //选取项目的文字颜色

			Font font = new Font("宋体", 16, FontStyle.Bold);
			SizeF size = e.Graphics.MeasureString(s, font);

			if(showBG)
			{
				e.Graphics.FillRectangle(new SolidBrush(BackColor),new Rectangle(left, top, width, height));
				e.Graphics.DrawString(s, font, new SolidBrush(SelectedForeColor),new RectangleF((240-size.ToSize().Width)/2, top, size.ToSize().Width, size.ToSize().Height));
			}
			else
			{
				e.Graphics.DrawString(s, font, new SolidBrush(ForeColor),new RectangleF((240-size.ToSize().Width)/2, top, size.ToSize().Width, size.ToSize().Height));
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -