C# 拖动无标题栏窗体

今天接着上次的QQ程序继续操作。首先要将窗体标题栏隐藏(如右图),然后设置固定窗体,不允许自由拖动窗体大小。最后是写入代码,实现无标题栏窗体的拖动。另外再完成一个自动隐藏窗体的效果 

 1.隐藏窗体标题栏
在窗体设计代码中修改FormBorderStyle属性,代码如下:
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
2.固定窗体大小,不允许自由拖动
在窗体设计代码中修改AutoSizeMode属性,代码如下:
this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;

 

 GrowAndShrink  控件根据它的内容增大或缩小
 GrowOnly 控件可以根据其内容任意增大,但不会缩小至小于它的 Size 属性值。

 


3.拖动无标题栏的窗体
设置3个变量,代码如下
        /// <summary>
        /// 判断鼠标是否按下
        /// </summary>

        private Boolean _isDown = false;
        /// <summary>
        /// 原来的鼠标点
        /// </summary>
        private Point _oldPoint;
        /// <summary>
        /// 原来窗口点
        /// </summary>
        private Point _oldForm;
然后写入鼠标进入事件、鼠标按下事件、鼠标松开事件、鼠标移动事件
        /// <summary>
        /// 鼠标进入,恢复界面大小时间
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>

        private void MainForm_MouseEnter(object sender, EventArgs e)
        {
            this.timer1.Stop(); //需要一个timer组件
            this.Height = 544;
        }

        /// <summary>
        /// 按下鼠标事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MainForm_MouseDown(object sender, MouseEventArgs e)
        {
            _isDown = true;
            _oldPoint = new Point();
            _oldPoint = e.Location;
            _oldForm = this.Location;
        }

 

        /// <summary>
        /// 松开鼠标事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MainForm_MouseUp(object sender, MouseEventArgs e)
        {
            _isDown = false;

        }

        /// <summary>
        /// 移动窗口事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void MainForm_MouseMove(object sender, MouseEventArgs e)
        {
            if (_isDown)
            {
                if (e.Y < 20)
                {
                    _oldForm.Offset(e.X - _oldPoint.X, e.Y - _oldPoint.Y);
                    this.Location = _oldForm;
                }
            }
        } 
移动窗体,需要一个timer控件。添加一个timer控件后,再添加一个tick事件
        /// <summary>
        /// 界面高度减3
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer1_Tick(object sender, EventArgs e)
        {
            this.Height -= 3;  //每隔单位时间,窗体长度减3
        }
修改timer控件的Interval属性,代码如下:
this.timer1.Interval = 1;  //每隔1毫秒执行tick事件

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值