社区
C#
帖子详情
请教,如何控制windows窗体在显示屏幕范围内移动,而不会移出屏幕????
ZC747
2004-11-03 10:22:24
大家都注意过输入法的那个小工具条吧,你可以在屏幕内随意将它拖放在任何位置,无论如何它都不会拖出屏幕,本人想将自己的winform做成那种效果,但没有找到好的实现方法(我在Move和LocationChanged事件中添加了坐标判断,效果不够理想),请各位帮忙!
...全文
250
18
打赏
收藏
请教,如何控制windows窗体在显示屏幕范围内移动,而不会移出屏幕????
大家都注意过输入法的那个小工具条吧,你可以在屏幕内随意将它拖放在任何位置,无论如何它都不会拖出屏幕,本人想将自己的winform做成那种效果,但没有找到好的实现方法(我在Move和LocationChanged事件中添加了坐标判断,效果不够理想),请各位帮忙!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ZC747
2004-11-04
打赏
举报
回复
噢,今天白天网络不通,晚上终于上来了!,问题基本解决!!
小蕊_claudia
2004-11-03
打赏
举报
回复
学习~~`
CSTerry
2004-11-03
打赏
举报
回复
hbxtlhx(下着春雨的天) 帖的第二个对了,是楼主要的效果
CSTerry
2004-11-03
打赏
举报
回复
楼上的效果不是楼主需要的,而是把鼠标的活动区域设定在一个范围内,不错不错哇,我收藏了^_^
我本来也想写在鼠标事件里,不过在窗体上面的蓝条部分好像是截获不到鼠标事件的
北京的雾霾天
2004-11-03
打赏
举报
回复
这样用效果更好啊:
private void Form1_Move(object sender, System.EventArgs e)
{
Rectangle clipRectangle=new Rectangle(200,200,300,300);
ClipCursor(ref clipRectangle);
}
北京的雾霾天
2004-11-03
打赏
举报
回复
如下做:
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void ClipCursor(ref Rectangle r);
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern bool GetClipCursor(out Rectangle r);
private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button==MouseButtons.Left)
{
Rectangle clipRectangle=new Rectangle(this.Left,this.Top+23,this.Left+this.Width,this.Height+this.Top);
ClipCursor(ref clipRectangle);
}
}
ZC747
2004-11-03
打赏
举报
回复
嗬嗬,我加了点enable =false;闪动解决了,但是在屏幕边拖动时,会经常被卡住(偏了点就不行)
CSTerry
2004-11-03
打赏
举报
回复
哈,我没注意到,因为我为了省系统资源把“拖动时显示窗口内容”的选项关了……呵呵 :-(
melonlee
2004-11-03
打赏
举报
回复
学习
ZC747
2004-11-03
打赏
举报
回复
to
CSTerry(Terry) ( ) 信誉:100
这个方法有个问题,窗体会不停的闪动!(在你不停地拖动时),效果不是很好,请各位帮忙!
CSTerry
2004-11-03
打赏
举报
回复
我试了可以啊
private void Form1_Move(object sender, System.EventArgs e)
{
if(this.Top<0)
this.Top=0;
if(this.Left<0)
this.Left=0;
if(this.Top+this.Height> Screen.PrimaryScreen.Bounds.Height)
this.Top=Screen.PrimaryScreen.Bounds.Height-this.Height;
if(this.Left+this.Width> Screen.PrimaryScreen.Bounds.Width)
this.Left=Screen.PrimaryScreen.Bounds.Width-this.Width;
}
ZC747
2004-11-03
打赏
举报
回复
好的,总算多了个解决的方法,我试试看,能不能将它整合好,我想实现的效果:使自己的窗体类似“输入法的那个小工具条“的效果,弄出来再发给给大家,先谢谢各位!:)
ZC747
2004-11-03
打赏
举报
回复
用起来感觉不是很好控制:~(
北京的雾霾天
2004-11-03
打赏
举报
回复
对啊,是作用在了鼠标上的,你可以由些来得到你的窗体的可动范围,因为你的鼠标在你的窗体上是相对是的.
我只是一个思路而已.
北京的雾霾天
2004-11-03
打赏
举报
回复
???
不知道有没有帮到楼主,只一个谢字并不能说我是对的,呵呵.
ZC747
2004-11-03
打赏
举报
回复
我试了一下,没有弄清楚,以下:
Rectangle clipRectangle=new Rectangle(200,200,300,300);
ClipCursor(ref clipRectangle);
控制的范围是针对或者说是作用给“ 什么“的。我感觉是作用在鼠标上。
ZC747
2004-11-03
打赏
举报
回复
to hbxtlhx(下着春雨的天) ( ) 信誉:106
ZC747
2004-11-03
打赏
举报
回复
谢谢
Python Tkinter
窗体
讲解
Python作为自立门户的语言,除了学习它的基础编程...当然大家也不用担心,即使没学过,在学习了该教程提供的Python的Tkinter
窗体
后,也会让你快速的掌握。这样我们就可以使用Python做一些小游戏,或者做一些小系统。
VC小知识(转)
主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。 AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED) //使程序最大化. <br />(2) 确定应用程序的路径 Use ...
vc++中常用代码片段
主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED)//使程序最大化.(2) 确定应用程序的路径Use GetModuleFileName 获得应用程序的路径,然后...
VC小知识
主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。 AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED) //使程序最大化. <br />(2) 确定应用程序的路径 Use ...
VC常用小知识
主窗口的 指针保存在CWinThread::m_pMainWnd中,调用AfxGetMainWnd实现。 AfxGetMainWnd() ->ShowWindow(SW_SHOWMAXMIZED) //使程序最大化. (2) 确定应用程序的路径 Use GetModuleFileName 获得应用程序的...
C#
110,567
社区成员
642,567
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章