马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

Winform窗体拖动问题

  [复制链接]
查看5100 | 回复6 | 2012-12-16 14:56:30 | 显示全部楼层 |阅读模式
来自其他社区的网友求助

如果现在有个from窗体,设置了最大和最小尺寸,现在运行时,是显示在中间,最大化后,跑到了左上角,我现在想拖动这个窗体,保持最大化的状态不变,怎么实现呢


相关帖子

C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
ibcadmin | 2012-12-16 14:57:08 | 显示全部楼层
[C#] 纯文本查看 复制代码
 #region 本程序中用到的API函数
        [DllImport("user32.dll")]
        public static extern bool ReleaseCapture();//用来释放被当前线程中某个窗口捕获的光标
        [DllImport("user32.dll")]
        public static extern bool SendMessage(IntPtr hwdn, int wMsg, int mParam, int lParam);//向指定的窗体发送Windows消息
        #endregion

        #region 本程序中需要声明的变量
        public const int WM_SYSCOMMAND = 0x0112;//该变量表示将向Windows发送的消息类型
        public const int SC_MOVE = 0xF010;//该变量表示发送消息的附加消息
        public const int HTCAPTION = 0x0002;//该变量表示发送消息的附加消息
        #endregion

        private void Form1_MouseDown(object sender, MouseEventArgs e)
        {
            ReleaseCapture();//用来释放被当前线程中某个窗口捕获的光标
            SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);//向Windows发送拖动窗体的消息
        }

Form1.Designer.cs

// 
// Form1
// 
加入:
this.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Form1_MouseDown);
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
ibcadmin | 2012-12-16 14:57:31 | 显示全部楼层
[C#] 纯文本查看 复制代码
using System.Drawing;
using System.Windows.Forms;

namespace DragWindowWithMaxSize
{
    public sealed partial class FormMain : Form
    {
        #region 常量

        private const int WM_NCLBUTTONDBLCLK = 0x00a3;
        private const int WM_SYSCOMMAND      = 0x0112;
        private const int SC_MAXMIZE         = 0xf030;

        #endregion

        public FormMain()
        {
            InitializeComponent();
        }

        protected override void WndProc(ref Message m)
        {
            switch (m.Msg)
            {
                case WM_NCLBUTTONDBLCLK:
                    {
                        if (WindowState == FormWindowState.Normal)
                        {
                            Location = new Point(0,0);
                            Size = MaximumSize;
                        }
                    }
                    break;

                case WM_SYSCOMMAND:
                    {
                        switch((uint)m.WParam)
                        {
                            case SC_MAXMIZE:
                                Size = MaximumSize;
                                WindowState = FormWindowState.Maximized;
                                return;
                        }
                    }
                    break;
            }
            base.WndProc(ref m);
           
        }
    }
}
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
淳晴常璟 | 2012-12-19 17:04:18 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
迷茫 | 2013-5-30 11:46:23 | 显示全部楼层
我公司现招C#工程师两名,工作地点在北京海淀上地附近,要求有一定工作经验。
1.熟练使用VS2010开发环境及开发相关工具;
2.熟练进行Form,Web程序开发;
3.熟练Javascript,CSS等代码的编写;
4.能对Windows服务器配置及使用;
5.掌握使用一种数据库(SQL Server,Mysql,Oracle等)。
有推荐或自荐的请讲简历发送至:aiguodao@126.com (请注明IBC论坛)
chao2332601 | 2013-6-16 00:07:15 | 显示全部楼层
谢谢分享!!!
chao2332601 | 2013-6-16 04:48:13 | 显示全部楼层
谢谢分享!!!
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则