请教,如何控制windows窗体在显示屏幕范围内移动,而不会移出屏幕????

ZC747 2004-11-03 10:22:24
大家都注意过输入法的那个小工具条吧,你可以在屏幕内随意将它拖放在任何位置,无论如何它都不会拖出屏幕,本人想将自己的winform做成那种效果,但没有找到好的实现方法(我在Move和LocationChanged事件中添加了坐标判断,效果不够理想),请各位帮忙!
...全文
250 18 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
谢谢

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧