首页 > 代码库 > 无Border可移动窗体
无Border可移动窗体
1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 10 namespace NoBoarder11 {12 public partial class FormParent : Form13 {14 public FormParent()15 {16 InitializeComponent();17 }18 19 protected bool isMouseDown = false;20 protected Point FormLocation;21 protected Point mouseOffset;22 23 private void FormParent_MouseDown(object sender, MouseEventArgs e)24 {25 if (e.Button == MouseButtons.Left)26 {27 isMouseDown = true;28 FormLocation = this.Location;29 mouseOffset = Control.MousePosition;30 31 } 32 }33 34 private void FormParent_MouseMove(object sender, MouseEventArgs e)35 {36 int x = 0;37 int y = 0;38 if (isMouseDown)39 {40 Point pt = Control.MousePosition;41 x = mouseOffset.X - pt.X;42 y = mouseOffset.Y - pt.Y;43 this.Location = new Point(FormLocation.X - x, FormLocation.Y - y);44 } 45 }46 47 private void FormParent_MouseUp(object sender, MouseEventArgs e)48 {49 isMouseDown = false; 50 }51 }52 }
将Form的FormBorderStyle设置为None, 运行就是没边界的窗口可移动的窗口啦
程序中多个无Border的窗口就可以直接继承这个类就可以了, 为了便于理解, 这个继承自Form的类叫FormParent, 且在上面添加一个Button, Text = "ParentForm"
其Click事件添加代码
1 private void button1_Click(object sender, EventArgs e)2 {3 FormSon f = new FormSon();4 f.Show();5 this.Hide();6 }
新建一个Windows Form, 取名叫FormSon, 让其继承于FormParent
1 public partial class FormSon : FormParent //!!!!!!!!!!!!!!!!!!!!!!!!!!!!2 { 3 public FormSon()4 {5 InitializeComponent();6 }7 }
运行程序点击FormParent就会弹出一模一样的FormSon出来, 说明还真是亲生的
但是人总是要有个性的, 我们修改FormSon的Button控件, 发现修改不了, 其实这不是家族遗传病, 是因为FormParent的Modifires属性设置为了Private, 改成Public就可以啦!
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。