Winform窗体拖动问题
来自其他社区的网友求助如果现在有个from窗体,设置了最大和最小尺寸,现在运行时,是显示在中间,最大化后,跑到了左上角,我现在想拖动这个窗体,保持最大化的状态不变,怎么实现呢
#region 本程序中用到的API函数
public static extern bool ReleaseCapture();//用来释放被当前线程中某个窗口捕获的光标
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); 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#工程师两名,工作地点在北京海淀上地附近,要求有一定工作经验。
1.熟练使用VS2010开发环境及开发相关工具;
2.熟练进行Form,Web程序开发;
3.熟练Javascript,CSS等代码的编写;
4.能对Windows服务器配置及使用;
5.掌握使用一种数据库(SQL Server,Mysql,Oracle等)。
有推荐或自荐的请讲简历发送至:aiguodao@126.com (请注明IBC论坛)
谢谢分享!!! 谢谢分享!!!
页:
[1]