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

📄 form1.cs

📁 Csharp实例编程百例.rar
💻 CS
字号:
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;

namespace OwnerDrawMenuApp
{
	/// <summary>
	/// Form1 的摘要说明。
	/// </summary>
	public class Form1 : System.Windows.Forms.Form
	{
		private System.Windows.Forms.MainMenu mainMenu1;
		private System.Windows.Forms.MenuItem menuItem1;
		private System.Windows.Forms.MenuItem menuItem2;
		private System.Windows.Forms.MenuItem menuItem3;
		private System.Windows.Forms.MenuItem menuItem4;
		private System.Windows.Forms.MenuItem menuItem5;
		private System.Windows.Forms.MenuItem menuItem6;
		/// <summary>
		/// 必需的设计器变量。
		/// </summary>
		private System.ComponentModel.Container components = null;

		public Form1()
		{
			//
			// Windows 窗体设计器支持所必需的
			//
			InitializeComponent();

			//
			// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
			//
		}

		/// <summary>
		/// 清理所有正在使用的资源。
		/// </summary>
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if (components != null) 
				{
					components.Dispose();
				}
			}
			base.Dispose( disposing );
		}

		#region Windows Form Designer generated code
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器修改
		/// 此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{
			this.mainMenu1 = new System.Windows.Forms.MainMenu();
			this.menuItem1 = new System.Windows.Forms.MenuItem();
			this.menuItem2 = new System.Windows.Forms.MenuItem();
			this.menuItem3 = new System.Windows.Forms.MenuItem();
			this.menuItem4 = new System.Windows.Forms.MenuItem();
			this.menuItem5 = new System.Windows.Forms.MenuItem();
			this.menuItem6 = new System.Windows.Forms.MenuItem();
			// 
			// mainMenu1
			// 
			this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
																					  this.menuItem1,
																					  this.menuItem2});
			// 
			// menuItem1
			// 
			this.menuItem1.Index = 0;
			this.menuItem1.Text = "File";
			// 
			// menuItem2
			// 
			this.menuItem2.Index = 1;
			this.menuItem2.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
																					  this.menuItem3,
																					  this.menuItem4,
																					  this.menuItem5,
																					  this.menuItem6});
			this.menuItem2.Text = "Country";
			// 
			// menuItem3
			// 
			this.menuItem3.Index = 0;
			this.menuItem3.OwnerDraw = true;
			this.menuItem3.Text = "USA";
			this.menuItem3.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.menuItem3_DrawItem);
			this.menuItem3.MeasureItem += new System.Windows.Forms.MeasureItemEventHandler(this.menuItem3_MeasureItem);
			// 
			// menuItem4
			// 
			this.menuItem4.Index = 1;
			this.menuItem4.OwnerDraw = true;
			this.menuItem4.Text = "Canada";
			this.menuItem4.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.menuItem4_DrawItem);
			this.menuItem4.MeasureItem += new System.Windows.Forms.MeasureItemEventHandler(this.menuItem4_MeasureItem);
			// 
			// menuItem5
			// 
			this.menuItem5.Index = 2;
			this.menuItem5.OwnerDraw = true;
			this.menuItem5.Text = "British";
			this.menuItem5.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.menuItem5_DrawItem);
			this.menuItem5.MeasureItem += new System.Windows.Forms.MeasureItemEventHandler(this.menuItem5_MeasureItem);
			// 
			// menuItem6
			// 
			this.menuItem6.Index = 3;
			this.menuItem6.OwnerDraw = true;
			this.menuItem6.Text = "Germany";
			this.menuItem6.DrawItem += new System.Windows.Forms.DrawItemEventHandler(this.menuItem6_DrawItem);
			this.menuItem6.MeasureItem += new System.Windows.Forms.MeasureItemEventHandler(this.menuItem6_MeasureItem);
			// 
			// Form1
			// 
			this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
			this.ClientSize = new System.Drawing.Size(296, 233);
			this.Menu = this.mainMenu1;
			this.Name = "Form1";
			this.Text = "Form1";

		}
		#endregion

		/// <summary>
		/// 应用程序的主入口点。
		/// </summary>
		[STAThread]
		static void Main() 
		{
			Application.Run(new Form1());
		}

		enum Country 
		{
			USA = 0,Canada,UK,Germany
		};//菜单项索引
		string[] CountryName = {"USA","CAN","UK","GER"};//菜单项文本

		private void MyDrawMenuItems(Country aCountry, System.Windows.Forms.DrawItemEventArgs e)
		{
			Graphics g = e.Graphics ;
			Rectangle aRect = new Rectangle ();//绘制图标的矩形区域
			aRect.X = e.Bounds .X ;
			aRect.Y = e.Bounds .Y ;
			aRect.Height = e.Bounds .Height ;
			aRect.Width = e.Bounds .Height ;

			if ((e.State & DrawItemState.Selected ) == DrawItemState.Selected )
			{//判断菜单项是否被选中,填充不同颜色
				g.FillRectangle (new SolidBrush (Color.Blue ),e.Bounds );
			}else {
				g.FillRectangle (new SolidBrush (this.BackColor ),e.Bounds );
			}

			Icon anIcon;//各菜单项使用的图标
			anIcon = new Icon (CountryName[(int)aCountry]+".ico");
			g.DrawIcon (anIcon,aRect );//绘制图标,然后写菜单文本
			g.DrawString (CountryName[(int)aCountry],this.Font ,new SolidBrush (Color.Black ),e.Bounds.X +20,e.Bounds .Y );
		}
		private void menuItem3_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
		{
			MyDrawMenuItems(Country.USA ,e);			
		}

		private void menuItem3_MeasureItem(object sender, System.Windows.Forms.MeasureItemEventArgs e)
		{	//设置自画菜单项的尺寸
			e.ItemWidth = 100;
			e.ItemHeight = 16;
		}

		private void menuItem4_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
		{
			MyDrawMenuItems(Country.Canada  ,e);			
		}

		private void menuItem4_MeasureItem(object sender, System.Windows.Forms.MeasureItemEventArgs e)
		{
			e.ItemWidth = 100;
			e.ItemHeight = 16;
		}

		private void menuItem5_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
		{
			MyDrawMenuItems(Country.UK ,e);			
		}

		private void menuItem5_MeasureItem(object sender, System.Windows.Forms.MeasureItemEventArgs e)
		{
			e.ItemWidth = 100;
			e.ItemHeight = 16;

		}

		private void menuItem6_DrawItem(object sender, System.Windows.Forms.DrawItemEventArgs e)
		{
			MyDrawMenuItems(Country.Germany ,e);			
		}

		private void menuItem6_MeasureItem(object sender, System.Windows.Forms.MeasureItemEventArgs e)
		{
			e.ItemWidth = 100;
			e.ItemHeight = 16;

		}
	}
}

⌨️ 快捷键说明

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