如何让子窗体不移动出父容器的范围

问题描述

如图,把一个窗体放在在容器里,鼠标可以拖动窗体显示到父容器外,如何不让窗体移动到父容器外呢?有一种方法是当移动到父容器外时,修改父容器属性AutoScroll=true,但这样会给父容器添加滚动条,,还有没有其他的方法呢?

解决方案

本帖最后由 lienguo 于 2015-09-30 10:14:40 编辑
解决方案二:
没人吗
解决方案三:
把子窗口的边框去掉,标题栏去掉。窗口弹出都不让拖动。
解决方案四:
usingSystem;usingSystem.Windows.Forms;namespaceWindowsFormsApplication1{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}protectedoverridevoidOnShown(EventArgse){base.OnShown(e);if(TopLevel){varfrm=newForm1();frm.TopLevel=false;frm.LocationChanged+=(sender,e1)=>{varb=frm.Bounds;b.Intersect(ClientRectangle);frm.Bounds=b;};Controls.Add(frm);frm.Show();}}}}
解决方案五:
判断一下,如果坐标跑到外面,就修改回来,不就得了
解决方案六:
指定Parent属性
解决方案七:
引用4楼Z65443344的回复:

判断一下,如果坐标跑到外面,就修改回来,不就得了

你的办法我考虑过,但都不是想要的效果。。。。。。
解决方案八:
引用6楼lienguo的回复:

Quote: 引用4楼Z65443344的回复:
判断一下,如果坐标跑到外面,就修改回来,不就得了

你的办法我考虑过,但都不是想要的效果。。。。。。

那你得说清楚想要什么效果啊,不让跑出去,又不能出滚动条,又不能修改位置,那你是要怎样
解决方案九:
引用6楼lienguo的回复:

Quote: 引用4楼Z65443344的回复:
判断一下,如果坐标跑到外面,就修改回来,不就得了

你的办法我考虑过,但都不是想要的效果。。。。。。

话说,你得判断到底是哪个方向跑出去了,哪个方向跑出去,就修改那个方向的位置向左跑出去,就得把x坐标设置成0,向上跑出去,就要把y坐标设置成0向右跑出去,就得把x坐标设置成主窗体宽度-子窗体宽度否则当然是不管哪边跑出去,都一下蹦回屏幕中间了
解决方案十:
给你写个简单的示例代码:intmaxX=this.Parent.Width-this.Width;intmaxY=this.Parent.Height-this.Height;intx=this.Location.x;inty=this.Loaction.y;boolneedToChangeLocation=false;if(x<0){x=0;needToChangeLocation=true;}if(y<0){y=0;needToChangeLocation=true;}if(x>maxX){x=maxX;needToChangeLocation=true;}if(y>maxY){y=maxY;needToChangeLocation=true;}if(needToChangeLocation){this.Loaction=newPoint(x,y);}

把这段代码放到LocationChanged事件里去,位置一变就执行
解决方案十一:
用c#代码,让form_child.mdiparent=form_parent
解决方案十二:
问度娘,搜索mdi窗体

时间: 2024-11-05 16:32:19

如何让子窗体不移动出父容器的范围的相关文章

父窗全能使用-弹出子窗体后,要求父窗体能继续使用,并且打开其它程序时能够复盖子窗体,不知道哪位大神有好办法!

问题描述 弹出子窗体后,要求父窗体能继续使用,并且打开其它程序时能够复盖子窗体,不知道哪位大神有好办法! 解决方案 思路: 1.将弹出窗体去掉 2.将扩展字段的页面写在当前页面panel中,点击隐藏显示panel

artdialog6.0.4的弹窗在父容器可拖拽

问题描述 artdialog6.0.4的弹窗在父容器可拖拽 artdialog6.0.4的弹窗怎么在父容器里拖拽,移动 artdialog6.0.4版本弹出的窗体不能在父窗体里移动 **<div style='width:1024px;height:500px'><iframe id='123' style='width:512px;height:300px'></iframe></div>** **在iframe的id为123里进行弹窗,弹出的窗体移动范围

如何将 tablelayoutpanel 某一个单元格指定为父容器 ?

问题描述 小弟现在要在窗体中打开子窗体.因为布局的关系,要使用tablelayoutpanel.现在的问题是,我可以在tablelayoutpanel0行1列的位置,打开子窗体,然后,我让子窗体最大化,子窗体却占满了整个tablelayoutpanel.问题:如何指定这个子窗体的父容器就是这0行1列这个单元格,使之最大化的时候,也就是在这个单元格中最大化,而不会跑出去?还有,我在子窗体中,加入了meunStrip,可是当我加载子窗体时,子窗体的meunStrip却跑到父窗体的meunStrip中

子窗体关闭父窗体刷新-关于子窗体关闭同时刷新父窗体的问题

问题描述 关于子窗体关闭同时刷新父窗体的问题 亲,是这样的,我现在在实习,最近在练习做一个C#连接Oracle然后对数据库进行增删改查的小程序,有一个问题,我简单说一下,就是我的父窗体有个dgv来显示数据库数据,然后有个增加数据Button点一下,出现子窗体,然后子窗体上有姓名,号码输入框,还有一个确定输入键.我想实现按一下确定输入键输入键,然后子窗体自动关闭,父窗体的dgv内容自动刷新,我百度了个方法,很管用,是这样的.//你在主窗体调用子窗体事件里面写: 子窗体f = new 子窗体();

C#调用子窗体后关闭自身(父窗体)

问题描述 C#窗体如何实现在调用子窗体后关闭自身窗体,而被调子窗体不关闭?类似登录窗体,除了在登录窗体后出现的主界面窗体的载入方法中运行登录窗体实例,就没有其它办法能实现了吗? 解决方案 解决方案二:show子窗体同时close父窗体不行么解决方案三:这种情况貌似不行.因为主窗体是程序入口.你关了主窗体,子窗体就关了.只能隐藏.解决方案四:将子窗体变量定义在父窗体的外边,使用时父窗体实例化,不用时在某个地方关闭或者隐藏解决方案五:引用楼主sandwave的帖子: C#窗体如何实现在调用子窗体后关

c#用户控件父容器设置问题

问题描述 如何设置一个用户控件的父容器,使得在他父容器所在的窗体能够访问到他.我设置了一个用户控件UCRooms.他的加载位置在窗体fmMain的控件flowLayoutPanel1里.我希望通过点击UCRooms控件的panel把值传给窗体fmMain.我尝试在UCroom的panel点击事件里写了一下设置父容器但写不对this.parent.parent=fmMain.这句该怎么写才能在fmmain窗口能够用.this.flowLayoutPanel1.***能访问panel 解决方案

Div即父容器不根据内容自适应高度的解决方法

解决|自适应 Div即父容器不根据内容自适应高度,我们看下面的代码: <div id="main"><div id="content"></div></div> 当Content内容多时,即使main设置了高度100%或auto.在不同浏览器下还是不能完好的自动伸展.内容的高度比较高了,但容器main的高度还是不能撑开. 我们可以通过三种方法来解决这个问题. 一,增加一个清除浮动,让父容器知道高度.请注意,清除浮动的容

CSS技巧知识:子元素浮动后父容器的闭合

css|浮动|技巧 最近两个月断断续续做了好几个网站的美工,做的过程中对DIV+CSS的标准开发有了进一步的了解.有两点收获最大,一是彻底弄懂了CSS的盒子模式(Box Model),再一个就是搞定了困扰我很久的"闭合浮动元素"的问题: 一般说来如果某个子元素使用了浮动(float),那父元素总是不能确切地知道子元素是在什么位置结束的,所以父元素的下边框总是从子元素的中间甚至是顶部穿过,看起来很不舒服. 最早时我都是在子元素结束后单独加个<br />或<div>

javascript客户端遍历控件与获取父容器对象示例代码

 本篇文章主要是对javascript客户端遍历控件与获取父容器对象示例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 1,遍历也面中所有的控件 function findControlAll()     {         var inputs=document.getElementsByTagName("input");         for(j=0;j<inputs.length;j++)            if(inputs[j].type==&quo