社区
C#
帖子详情
如何使鼠标拖动可以改变无边框的窗体的大小啊?
dugupiaoyun
2006-01-16 07:49:21
我有一个窗体设置为无边框的,但就不能更改大小了,怎么才能和有边框的时候一样,用鼠标按着一拖就能改变大小啊.能否给个例子先(最好给个简单点的,能改变窗体的高度的就行了).
...全文
405
10
打赏
收藏
如何使鼠标拖动可以改变无边框的窗体的大小啊?
我有一个窗体设置为无边框的,但就不能更改大小了,怎么才能和有边框的时候一样,用鼠标按着一拖就能改变大小啊.能否给个例子先(最好给个简单点的,能改变窗体的高度的就行了).
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yuanzhihua520
2006-06-08
打赏
举报
回复
up
dugupiaoyun
2006-01-21
打赏
举报
回复
我不是说的要移动窗体,移动窗体我有更好的方法,我是说用鼠标来改变窗体的大小,而不是窗体的位置。
MyLf
2006-01-20
打赏
举报
回复
protected override void WndProc(ref System.Windows.Forms.Message m)
{
int WM_NCHITTEST = 0x0084;
int HTBOTTOMRIGHT= 17;
int HTBOTTOMLEFT = 16;
int HTCLIENT = 1;
if(m.Msg == WM_NCHITTEST)
{
int p = Control.MousePosition.X - this.Left + 2;//2为允许范围
if( p >= this.Width)//Mouse位于左边
m.Result = (IntPtr)HTBOTTOMRIGHT;
else if(p <= 2)//Mouse位于右边
m.Result = (IntPtr)HTBOTTOMLEFT;
else
m.Result = (IntPtr)HTCLIENT;
}
else
base.WndProc (ref m);
}
Mouse位于上边,下端的情况自己搞定。消息号可以查看winuser.h的定义
dugupiaoyun
2006-01-20
打赏
举报
回复
上面的mousePosition定义忘了写private System.Drawing.Point mousePosition=new Point(0,0);
dugupiaoyun
2006-01-20
打赏
举报
回复
另外3楼的你写的代码可能是误解了我的题目意思了,而且你写的拖动也存在问题哦,没我自己想的好(如下):
private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Left)
{
this.mousePosition.X = e.X;
this.mousePosition.Y = e.Y;
}
}
private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(e.Button == MouseButtons.Left)
{
this.Top = Control.MousePosition.Y - mousePosition.Y;
this.Left = Control.MousePosition.X - mousePosition.X;
}
}
dugupiaoyun
2006-01-20
打赏
举报
回复
用
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.Style |= 0xC0000;
return cp;
}
}
确实是可以拖动了,但是我的无边框窗体成了有边框的了~~~~。
另外介绍一下...cp.Style |= 0xC0000到底是个什么东东哦?不懂!
wantsfly
2006-01-18
打赏
举报
回复
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.Style |= 0xC0000;
return cp;
}
}
califord
2006-01-16
打赏
举报
回复
不会,帮你顶一下
anningning821009
2006-01-16
打赏
举报
回复
程序实现的思路是在窗体的MouseDown事件中获取鼠标相对于窗体的坐标,在MouseOver事件中获取新的鼠标坐标值,显然这两个坐标值的差加上窗体原来的坐标,就是窗体应该移动到的新的坐标值。然后把窗体位置移动到新坐标值处即可。
private Point mouseOffset;
private bool isMouseDown = false;
private void Form2_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
int xOffset;
int yOffset;
if (e.Button == MouseButtons.Left)
{
xOffset = -e.X - SystemInformation.FrameBorderSize.Width;
yOffset = -e.Y - SystemInformation.CaptionHeight -
SystemInformation.FrameBorderSize.Height;
mouseOffset = new Point(xOffset, yOffset);
isMouseDown = true;
}
}
private void Form2_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (isMouseDown)
{
Point mousePos = Control.MousePosition;
mousePos.Offset(mouseOffset.X, mouseOffset.Y);
Location = mousePos;
}
}
private void Form2_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
isMouseDown=false;
}
dugupiaoyun
2006-01-16
打赏
举报
回复
帮帮忙回个贴啊!
java中 实现无标题无
边框
的
窗体
能够用
鼠标
拖动
改变
窗口
大小
出现的问题: 1、setUndecorated(true)设置
窗体
无
边框
,但是setResizable(true)设置 可以通过
鼠标
调整
大小
,不起作用,这是怎么回事? 2、有没有事件,可以监听到,
鼠标
移动到边缘?如果java设置
窗体
无
边框
后,无 法
鼠标
拖动
调整
大小
,我想自己做监听事件。 需要的效果: 目标: 下面是我做,很简单,但是费了老大劲了! 1、我所提的问题,出
c++builder如何通过
鼠标
拖动
改变
无
边框
窗体
的
大小
(bsnone)
转自http://www.ccrun.com/article.asp?i=990&d=70jx1b 在C++Builder中,将Form的BorderStyle设为bsNone以后该
窗体
将没有
边框
,不能
改变
窗体
大小
,也不能
拖动
窗体
。那么如何
拖动
及用
鼠标
改变
无
边框
窗体
大小
呢?
拖动
无
边框
窗体
的解决方法很多,例如: 1. 向
窗体
发送WM_NCLBUTTONDOWN消息,LParam = HTCAPT
winform自定义
窗体
边框
样式模板(支持四周
边框
拖拽
改变
窗体
大小
,支持
鼠标
拖动
头部移动
窗体
)
winform自己的
边框
已经过时,但小伙伴们又觉得自定义太过麻烦。本文将手把手教你自定义winform
边框
样式,并提供源代码链接(可直接作为模板使用)。话不多说,直接上操作步骤。 先上一张完成截图 一:去除winform
边框
,添加主面板,添加
窗体
四边(可自定义宽度和颜色,支持拖拽
改变
窗体
大小
) 1、去除winform
边框
:将FormBorderStyle属性设置为none 2、添...
WPF 无
边框
窗体
鼠标
拖动
改变
大小
和移动
**WPF 处理 Windows 消息的模式和 WinForm 不一样了。Window 类里没有 WndProc 函数了,想要截取 Windows 消息必须借助 HwndSource 添加 Hook。 代码:** protected override void OnSourceInitialized(EventArgs e) { base.OnSourceInitialized(e); HwndSource hwndSource = PresentationSource.FromVisual
无
边框
窗体
的
拖动
以及
大小
改变
的实现方式
目前,界面流行扁平化,对于传统的window
窗体
,我们经常需要去掉
窗体
的
边框
,以求视角扁平化的效果。去掉
窗体
的
边框
很容易,关键是对于无
边框
的
窗体
,我们无法对其进行
拖动
,也无法通过
拖动
窗体
边缘来
改变
窗体
的
大小
。通常我们会想到处理
鼠标
事件来模拟效果,但我们自己手动写代码会麻烦许多。其实window消息中,有个WM_NCHITTEST,普通
窗体
中,点击标题栏
拖动
窗口以及
拖动
窗体
边缘
改变
窗体
大小
就是通过发
C#
111,128
社区成员
642,536
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章