两个Form窗体之间的拖动事件
代码是两个窗体Form1,Form2,可以建立一个应用程序把代码放到项目里启动Form1来运行程序,环境是VS2005。
代码Form1.cs
代码Form2.cs
代码Form1.cs
- C# code
-
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace dragControl { public partial class Form1 : Form { private System.Windows.Forms.Button button1; public Form1() { InitializeComponent(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); this.button1 = new System.Windows.Forms.Button(); // // button1 // this.button1.Location = new System.Drawing.Point(116, 65); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(75, 23); this.button1.TabIndex = 0; this.button1.Text = "button1"; this.button1.UseVisualStyleBackColor = true; this.button1.MouseDown += new System.Windows.Forms.MouseEventHandler(this.button1_MouseDown); this.Controls.Add(this.button1); } private void button1_MouseDown(object sender, MouseEventArgs e) { this.button1.DoDragDrop(sender, DragDropEffects.Move); } protected override void OnDoubleClick(EventArgs e) { base.OnDoubleClick(e); Form2 frm = new Form2(); frm.Show(); } } }
代码Form2.cs
- C# code
-
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace dragControl { public partial class Form2 : Form { public Form2() { InitializeComponent(); } protected override void OnLoad(EventArgs e) { base.OnLoad(e); this.AllowDrop = true; this.DragDrop += new System.Windows.Forms.DragEventHandler(this.Form2_DragDrop); this.DragOver += new System.Windows.Forms.DragEventHandler(this.Form2_DragOver); } private void Form2_DragOver(object sender, DragEventArgs e) { if (e.AllowedEffect == DragDropEffects.Move) { e.Effect = DragDropEffects.Move; } } private void Form2_DragDrop(object sender, DragEventArgs e) { Button btn = e.Data.GetData("System.Windows.Forms.Button") as Button; if (btn != null) { if (btn.Parent != null) { btn.Parent.Controls.Remove(btn); btn.Location = this.PointToClient(new Point(e.X, e.Y)); this.Controls.Add(btn); } } } } }