C# 去掉标题栏后,这样用鼠标移动窗体?

C#去掉标题栏后,这样用鼠标移动窗体?我想做一个类似输入法窗体的小时钟,可是用this.FormBorderStyle=FormBorderStyle.None;去掉标题... C# 去掉标题栏后,这样用鼠标移动窗体?
我想做一个类似输入法窗体的小时钟,可是用 this.FormBorderStyle = FormBorderStyle.None; 去掉标题栏后无法用鼠标移动窗体!!
特来请教解决法案,(最好就像,搜狗输入法那样,鼠标放到边上的时候,变成“十字”可以移动)

顺便说一下本人很菜,希望详细说一下谢谢!
展开
 我来答
runcr
2009-12-18 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:159
采纳率:0%
帮助的人:98.6万
展开全部
// 移动窗体
const int WM_NCLBUTTONDOWN = 0xA1;
const int HT_CAPTION = 0x2;
[DllImport("user32.dll")]
static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);

// 窗体上鼠标按下时
protected override void OnMouseDown(MouseEventArgs e)
{
if (e.Button == MouseButtons.Left & this.WindowState==FormWindowState.Normal)
{
// 移动窗体
this.Capture = false;
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
}
}
百度网友6eed2f8
2009-12-17 · TA获得超过5082个赞
知道大有可为答主
回答量:3423
采纳率:0%
帮助的人:3809万
展开全部
偶的空间有篇关于C# Winform 不规则窗体的文章,对你有帮助,可以参考一下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhxingway
2009-12-25
知道答主
回答量:23
采纳率:0%
帮助的人:20.8万
展开全部
#region 实现点击移动

internal static int WM_NCHITTEST = 0x84;
internal static IntPtr HTCLIENT = (IntPtr)0x1;
internal static IntPtr HTCAPTION = (IntPtr)0x2;
internal static int WM_NCLBUTTONDBLCLK = 0x00A3;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_NCLBUTTONDBLCLK)
{
return;
}
if (m.Msg == WM_NCHITTEST)
{
base.WndProc(ref m);
if (m.Result == HTCLIENT)
{
m.HWnd = this.Handle;
m.Result = HTCAPTION;
}
return;
}
base.WndProc(ref m);
}

#endregion

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lgjlry/archive/2008/12/06/3460157.aspx

参考资料: http://blog.csdn.net/lgjlry/archive/2008/12/06/3460157.aspx

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
風琪槿u
2009-12-29
知道答主
回答量:42
采纳率:0%
帮助的人:24.6万
展开全部
我想了三个方法,有两个别人已答过
1,通过事件,对于界面复杂点的窗体效率会成为问题
2.重写窗口函数,修改消息,窗体会失去对其它事件的响应,
3.通过发送假消息
步骤:
1.引入命名空间using System.Runtime.InteropServices;
2.声名两个API函数
[DllImport("user32.dll")]
public static extern bool ReleaseCapture();

[DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
3.可以用窗体的MouseDown,当然也可以用窗体上的控件的这个事件,要里面可以做一些处理,要移动就要里面写上这两句
ReleaseCapture();//首先释放鼠标焦点捕获
SendMessage(this.Handle, 0x0112, 0xF011, 0);//然后向当前窗体发送假消息
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
微软专家张海
2009-12-17 · TA获得超过748个赞
知道小有建树答主
回答量:564
采纳率:100%
帮助的人:0
展开全部
搜索 “C# 移动无标题窗体”
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chen3002min
2009-12-17 · TA获得超过262个赞
知道小有建树答主
回答量:271
采纳率:0%
帮助的人:162万
展开全部
当鼠标点击那个控件,判断鼠标的位置,然后窗体根据鼠标移动位置来移动
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式