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

📄 usercontrol1.cs

📁 用C#自己封的一个时间类库
💻 CS
字号:
using System;
using System.Collections;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Windows.Forms;

namespace WindowsExtendedControls
{
	/// <summary>
	/// 控件
	/// </summary>
	public class ShapeEx : System.Windows.Forms.Control
	{
		/// <summary>
		/// 必需的设计器变量。
		/// </summary>
		/// 
		private Color _BorderColor=new Color();
		private Color _BackColor=new Color();
		private bool _ReSizeble;
		private Point _SelfLocation=new Point();
		private Point _MouseLocation=new Point();
		private int _SelfWidth;
		private int _SelfHeight;
		private int _SelectSelctedIndex;//0-8,0:SizeAll
		private Rectangle _rectLeftSelector=new Rectangle();
		private Rectangle _rectTopSelector=new Rectangle();
		private Rectangle _rectRightSelector=new Rectangle();
		private Rectangle _rectBottomSelector=new Rectangle();
		private Rectangle _rectLeftTopSelector=new Rectangle();
		private Rectangle _rectRightTopSelector=new Rectangle();
		private Rectangle _rectRightBottomSelector=new Rectangle();
		private Rectangle _rectLeftBottomSelector=new Rectangle();
		private System.Windows.Forms.DataGrid dataGrid1;
		private System.Windows.Forms.DataGrid dataGrid2;
		private System.ComponentModel.Container components = null;
		public ShapeEx()
		{
			// 该调用是 Windows.Forms 窗体设计器所必需的。
			InitializeComponent();

			// TODO: 在 InitComponent 调用后添加任何初始化

		}
		[DefaultValue("Black"),Description("边框颜色"),Category("Appearance")] 
		public Color BorderColor
		{
			get 
			{
				// Insert code here.
				return _BorderColor;
			}
			set 
			{
				_BorderColor=value;
				this.Invalidate();
			}
		}
		[DefaultValue("Control"),Description("背景颜色"),Category("Appearance")] 
		public override Color BackColor
		{
			get 
			{
				// Insert code here.
				return _BackColor;
			}
			set 
			{
				_BackColor=value;
				this.Invalidate();
			}
		}
		[DefaultValue(false),Description("运行中控件大小是否可拖拽编辑"),Category("Behavior")] 
		public  bool ReSizeble
		{
			get 
			{
				// Insert code here.
				return _ReSizeble;
			}
			set 
			{
				_ReSizeble=value;
				this.Invalidate();
			}
		}
		[Description("控件选择区域"),Category("Behavior")] 
		public  Rectangle SelectRectangle
		{
			get 
			{
				Rectangle selectRectangler=new Rectangle();
				selectRectangler.X = this.Location.X+7;
				selectRectangler.Y = this.Location.Y+7;
				selectRectangler.Height = this.Height-15;
				selectRectangler.Width = this.Width-15;
				return selectRectangler;
			}
		}
 
		protected override void OnPaint(PaintEventArgs pe)
		{
			// Calling the base class OnPaint
			base.OnPaint(pe);
			ReDrawControl(pe.Graphics);
		}


		private void DrawSelector(Graphics graphics)
		{
			SolidBrush SelectorPen=new SolidBrush(Color.White);
			Pen borderPen=new Pen(this._BorderColor,1);
			try
			{
				//实心

				PointF[] LeftPoints=getPointF(0,this.Height/2-3,6,6);
				graphics.FillClosedCurve(SelectorPen, LeftPoints);

				PointF[] TopPoints=getPointF(this.Width/2-3,0,6,6);
				graphics.FillClosedCurve(SelectorPen, TopPoints);

				PointF[] RightPoints=getPointF(this.Width-7,this.Height/2-3,6,6);
				graphics.FillClosedCurve(SelectorPen, RightPoints);

				PointF[] BottomPoints=getPointF(this.Width/2-3,this.Height-7,6,6);
				graphics.FillClosedCurve(SelectorPen, BottomPoints);

				PointF[] LeftTopPoints=getPointF(0,0,6,6);
				graphics.FillClosedCurve(SelectorPen, LeftTopPoints);

				PointF[] RightTopPoints=getPointF(this.Width-7,0,6,6);
				graphics.FillClosedCurve(SelectorPen, RightTopPoints);

				PointF[] RightBottomPoints=getPointF(this.Width-7,this.Height-7,6,6);
				graphics.FillClosedCurve(SelectorPen, RightBottomPoints);
    
				PointF[] LeftBottomPoints=getPointF(0,this.Height-7,6,6);
				graphics.FillClosedCurve(SelectorPen, LeftBottomPoints);
				//边框
				_rectLeftSelector.X = 0;
				_rectLeftSelector.Y = this.Height/2-3;
				_rectLeftSelector.Height = 6;
				_rectLeftSelector.Width = 6;
				graphics.DrawRectangle(borderPen, _rectLeftSelector);

				_rectTopSelector.X = this.Width/2-3;
				_rectTopSelector.Y = 0;
				_rectTopSelector.Height = 6;
				_rectTopSelector.Width = 6;
				graphics.DrawRectangle(borderPen, _rectTopSelector);

				_rectRightSelector.X = this.Width-7;
				_rectRightSelector.Y = this.Height/2-3;
				_rectRightSelector.Height = 6;
				_rectRightSelector.Width = 6;
				graphics.DrawRectangle(borderPen, _rectRightSelector);

				_rectBottomSelector.X = this.Width/2-3;
				_rectBottomSelector.Y = this.Height-7;
				_rectBottomSelector.Height = 6;
				_rectBottomSelector.Width = 6;
				graphics.DrawRectangle(borderPen, _rectBottomSelector);

				_rectLeftTopSelector.X=0;
				_rectLeftTopSelector.Y=0;
				_rectLeftTopSelector.Width=6;
				_rectLeftTopSelector.Height=6;
				graphics.DrawRectangle(borderPen, _rectLeftTopSelector);

				_rectRightTopSelector.X=this.Width-7;
				_rectRightTopSelector.Y=0;
				_rectRightTopSelector.Width=6;
				_rectRightTopSelector.Height=6;
				graphics.DrawRectangle(borderPen, _rectRightTopSelector);

				_rectRightBottomSelector.X=this.Width-7;
				_rectRightBottomSelector.Y=this.Height-7;
				_rectRightBottomSelector.Width=6;
				_rectRightBottomSelector.Height=6;
				graphics.DrawRectangle(borderPen, _rectRightBottomSelector);

				_rectLeftBottomSelector.X=0;
				_rectLeftBottomSelector.Y=this.Height-7;
				_rectLeftBottomSelector.Width=6;
				_rectLeftBottomSelector.Height=6;
				graphics.DrawRectangle(borderPen, _rectLeftBottomSelector);
			}
			catch(Exception E)
			{
				throw E;
			}
			finally
			{
				SelectorPen.Dispose();
				borderPen.Dispose();
			}
    
		}
		private void ReDrawControl(Graphics graphics)
		{
   
			try
			{
   
				//绘制背景
				/*
				graphics.Clear(this._BackColor);
				SolidBrush backPen=new SolidBrush(this._BackColor);
				PointF point1 = new PointF(1,1);
				PointF point2 = new PointF(this.Width-2,1);
				PointF point3 = new PointF(this.Width-2,this.Height-2);
				PointF point4 = new PointF(1,this.Height-2);
				PointF[] points = {point1, point2, point3, point4};
				graphics.FillClosedCurve(backPen, points);
				*/
				//绘制边框    
				Rectangle rectBorder=new Rectangle();
				Pen borderPen=new Pen(this._BorderColor,1);
				rectBorder.X = 7;
				rectBorder.Y = 7;
				rectBorder.Height = this.Height-15;
				rectBorder.Width = this.Width-15;
				graphics.DrawRectangle(borderPen, rectBorder);
				//绘制编辑框
				if (_ReSizeble)
				{
					DrawSelector(graphics);
				}
			}
			catch(Exception E)
			{
				throw E;
			}
			finally
			{
				graphics.Dispose();
			}
		}
		/// <summary>
		/// 清理所有正在使用的资源。
		/// </summary>
		private PointF[] getPointF(int x,int y,int Width,int Height)
		{
			PointF point1 = new PointF(x,y);
			PointF point2 = new PointF(x+Width,y);
			PointF point3 = new PointF(x+Width,y+Height);
			PointF point4 = new PointF(x,y+Height);
			PointF[] points = {point1, point2, point3, point4};
			return points;
		}
		protected override void Dispose( bool disposing )
		{
			if( disposing )
			{
				if( components != null )
					components.Dispose();
			}
			base.Dispose( disposing );
		}

		#region 组件设计器生成的代码
		/// <summary>
		/// 设计器支持所需的方法 - 不要使用代码编辑器 
		/// 修改此方法的内容。
		/// </summary>
		private void InitializeComponent()
		{
			this.dataGrid1 = new System.Windows.Forms.DataGrid();
			this.dataGrid2 = new System.Windows.Forms.DataGrid();
			((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
			((System.ComponentModel.ISupportInitialize)(this.dataGrid2)).BeginInit();
			// 
			// dataGrid1
			// 
			this.dataGrid1.DataMember = "";
			this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
			this.dataGrid1.Location = new System.Drawing.Point(17, 17);
			this.dataGrid1.Name = "dataGrid1";
			this.dataGrid1.TabIndex = 0;
			// 
			// dataGrid2
			// 
			this.dataGrid2.DataMember = "";
			this.dataGrid2.HeaderForeColor = System.Drawing.SystemColors.ControlText;
			this.dataGrid2.Location = new System.Drawing.Point(117, 17);
			this.dataGrid2.Name = "dataGrid2";
			this.dataGrid2.TabIndex = 0;
			// 
			// ShapeEx
			// 
			this.Resize += new System.EventHandler(this.ShapeEx_Resize);
			this.MouseUp += new System.Windows.Forms.MouseEventHandler(this.ShapeEx_MouseUp);
			this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.ShapeEx_MouseMove);
			this.MouseLeave += new System.EventHandler(this.ShapeEx_MouseLeave);
			this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.ShapeEx_MouseDown);
			((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
			((System.ComponentModel.ISupportInitialize)(this.dataGrid2)).EndInit();

		}
		#endregion

		private void ShapeEx_Resize(object sender, EventArgs e)
		{
			if (this.Width<16 || this.Height<16)
			{
				this.Width=16;
				this.Height=16;
			}
			this.Invalidate();
		}

 

		private void ShapeEx_MouseDown(object sender, MouseEventArgs e)
		{
			if (_ReSizeble)
			{
				if (_rectLeftSelector.Contains(e.X,e.Y) || _rectRightSelector.Contains(e.X,e.Y) || _rectTopSelector.Contains(e.X,e.Y) || _rectBottomSelector.Contains(e.X,e.Y) ||_rectLeftTopSelector.Contains(e.X,e.Y) || _rectRightTopSelector.Contains(e.X,e.Y) || _rectRightBottomSelector.Contains(e.X,e.Y) || _rectLeftBottomSelector.Contains(e.X,e.Y))
				{
					if (_rectLeftTopSelector.Contains(e.X,e.Y) )
					{
						this.Cursor=Cursors.SizeNWSE;
						this._SelectSelctedIndex=1;
					}
     
					if (_rectTopSelector.Contains(e.X,e.Y) )
					{
						this.Cursor=Cursors.SizeNS;
						this._SelectSelctedIndex=2;
					}
					if (_rectRightTopSelector.Contains(e.X,e.Y) )
					{
						this.Cursor=Cursors.SizeNESW;
						this._SelectSelctedIndex=3;
					}
					if (_rectRightSelector.Contains(e.X,e.Y) )
					{
						this.Cursor=Cursors.SizeWE;
						this._SelectSelctedIndex=4;
					}
					if (_rectRightBottomSelector.Contains(e.X,e.Y) )
					{
						this.Cursor=Cursors.SizeNWSE;
						this._SelectSelctedIndex=5;
					}
					if (_rectBottomSelector.Contains(e.X,e.Y))
					{
						this.Cursor=Cursors.SizeNS;
						this._SelectSelctedIndex=6;
					}
					if (_rectLeftBottomSelector.Contains(e.X,e.Y) )
					{
						this.Cursor=Cursors.SizeNESW;
						this._SelectSelctedIndex=7;
					}
					if (_rectLeftSelector.Contains(e.X,e.Y))
					{
						this.Cursor=Cursors.SizeWE;
						this._SelectSelctedIndex=8;
					}

				}
				else
				{
					this.Cursor=Cursors.SizeAll;
					this._SelectSelctedIndex=0;
				}
				this._SelfLocation.X=this.Location.X;
				this._SelfLocation.Y=this.Location.Y;
				this._MouseLocation.X=Cursor.Position.X;
				this._MouseLocation.Y=Cursor.Position.Y;
				this._SelfWidth=this.Width;
				this._SelfHeight=this.Height;
			}
		}



		private void ShapeEx_MouseMove(object sender, MouseEventArgs e)
		{
			//move and resize
			switch (this._SelectSelctedIndex)
			{
				case 0:
					this.Location=new Point(Cursor.Position.X-(_MouseLocation.X-_SelfLocation.X),Cursor.Position.Y-(_MouseLocation.Y-_SelfLocation.Y));
					break;
				case 1:
					this.Height=this._SelfHeight-(Cursor.Position.Y-_MouseLocation.Y);
					this.Width=this._SelfWidth-(Cursor.Position.X-_MouseLocation.X);
					this.Location=new Point(Cursor.Position.X-_MouseLocation.X+_SelfLocation.X,Cursor.Position.Y-_MouseLocation.Y+_SelfLocation.Y);
					break;
				case 2:
					this.Height=this._SelfHeight-(Cursor.Position.Y-_MouseLocation.Y);
					this.Location=new Point(_SelfLocation.X,Cursor.Position.Y-_MouseLocation.Y+_SelfLocation.Y);
					break;
				case 3:
					this.Height=this._SelfHeight-(Cursor.Position.Y-_MouseLocation.Y);
					this.Width=this._SelfWidth+(Cursor.Position.X-_MouseLocation.X);
					this.Location=new Point(_SelfLocation.X,Cursor.Position.Y-(_MouseLocation.Y-_SelfLocation.Y));
					break;
				case 4:
					this.Width=this._SelfWidth+(Cursor.Position.X-_MouseLocation.X);
					break;
				case 5:
					this.Height=this._SelfHeight+(Cursor.Position.Y-_MouseLocation.Y);
					this.Width=this._SelfWidth+(Cursor.Position.X-_MouseLocation.X);
					break;
				case 6:
					this.Height=this._SelfHeight+(Cursor.Position.Y-_MouseLocation.Y);
					break;
				case 7:
					this.Height=this._SelfHeight+(Cursor.Position.Y-_MouseLocation.Y);
					this.Width=this._SelfWidth-(Cursor.Position.X-_MouseLocation.X);
					this.Location=new Point(Cursor.Position.X-_MouseLocation.X+_SelfLocation.X,_SelfLocation.Y);
					break;
				case 8:
					this.Width=this._SelfWidth-(Cursor.Position.X-_MouseLocation.X);
					this.Location=new Point(Cursor.Position.X-_MouseLocation.X+_SelfLocation.X,_SelfLocation.Y);
					break;
			}
		}



		private void ShapeEx_MouseLeave(object sender, EventArgs e)
		{
			this.Cursor=Cursors.Default;
			this._SelectSelctedIndex=-1;
		}


		private void ShapeEx_MouseUp(object sender, MouseEventArgs e)
		{
			this.Cursor=Cursors.Default;
			this._SelectSelctedIndex=-1;
		}
	}
}


⌨️ 快捷键说明

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