###自定义控件的设计时问题###
自定义控件,如何能实现在设计时,不允许拖放任何其它控件在其上。
我现在的做法是
:
以下代码都是在设计器里的
public override void Initialize(IComponent component)
{
base.Initialize(component);
if (Control is UserControl1)
{
mCon = (UserControl1)Control;
mDesignerHost = (IDesignerHost)
GetService(typeof(IDesignerHost));
mToolboxService = (IToolboxService)
GetService(typeof(IToolboxService));
mCon .AllowDrop = true;
this.EnableDragDrop(true);
}
}
protected override void OnDragEnter(System.Windows.Forms.DragEventArgs de)
{
base.OnDragEnter(de);
de.Effect = DragDropEffects.None;
return;
}
1。现在的情况是,拖动工具箱button进入过程中,鼠标是不显示出来button的。鼠标抬起的时候也不放置button在控件中,但是鼠标上有button按钮附着着,再单击一下,就放置button在控件中了。
2。要是在Initialize方法中
mCon .AllowDrop = false;//设置成false
this.EnableDragDrop(false);//设置成false
就跟没定义设计器一样了,可以任意拖放控件在其中。
请高手指教,谢谢!!!!!!!!!!!!!!!
问题点数:100、回复次数:21Top
1 楼flygoldfish(长江支流)回复于 2006-04-12 10:52:30 得分 0
一个属性就可以搞定,如果你设置是容器他就允许拖了,把它关掉Top
2 楼dahaig(HarryPottor)回复于 2006-04-12 10:57:13 得分 0
控件继承的是userControl
怎么设计属性?Top
3 楼misvcom(零下一度)回复于 2006-04-12 11:17:28 得分 10
用System.ComponentModel命名空间里面的属性Top
4 楼flygoldfish(长江支流)回复于 2006-04-12 11:17:44 得分 10
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Control
System.Windows.Forms.ScrollableControl
System.Windows.Forms.ContainerControl
System.Windows.Forms.Design.ComponentTray
System.Windows.Forms.Panel
System.Object
System.MarshalByRefObject
System.ComponentModel.Component
System.Windows.Forms.Control
System.Windows.Forms.ScrollableControl
System.Windows.Forms.ContainerControl
System.Windows.Forms.Form
System.Windows.Forms.PropertyGrid
System.Windows.Forms.UpDownBase
System.Windows.Forms.UserControl
你看看,UserControl本身是容器控件,所以,你定义的控件如果要滚动,最好是继承于ScrollableControl,否则更上一次或设置不可滚动属性
Top
5 楼dahaig(HarryPottor)回复于 2006-04-12 11:32:23 得分 0
继承ScrollableControl也是容器
继承System.ComponentModel.Component就成组件了Top
6 楼dahaig(HarryPottor)回复于 2006-04-12 15:37:27 得分 0
再顶下Top
7 楼dahaig(HarryPottor)回复于 2006-04-12 17:30:01 得分 0
顶起来,请高手帮忙!Top
8 楼soye()回复于 2006-04-13 13:39:22 得分 5
dingTop
9 楼wxdl1981(沉默之狼)回复于 2006-04-14 08:52:51 得分 10
This_ControlAdded(...)
{
this.Controls.Remove(e.Control);
}Top
10 楼liujiwe79(专业做控件)回复于 2006-04-14 10:15:34 得分 10
可以在构造器中写代码控制属性Top
11 楼pshy(无心)回复于 2006-04-14 11:22:35 得分 5
学习ing.......Top
12 楼dahaig(HarryPottor)回复于 2006-04-17 16:20:10 得分 0
以上办法都不行,继续顶!求高手!Top
13 楼juneapple123(小y)回复于 2006-04-19 10:48:18 得分 5
没搞过,学习ing...
帮你顶个Top
14 楼huangguangdou(人生最遗憾的,莫过于,轻易的放弃了不该放弃的)回复于 2006-04-19 10:53:47 得分 10
study
Top
15 楼qpl007(蓝色闪电)回复于 2006-04-21 09:37:56 得分 10
要让控件不是容器,直接继承自 Control 不就可以了。Top
16 楼dahaig(HarryPottor)回复于 2006-04-21 13:02:41 得分 0
不仅仅不是容器,而且要在设计时不允许拖放其它toolbox控件在其上
继承control仍然可以拖放其他控件在它上面Top
17 楼zhf777(八步)回复于 2006-04-26 15:07:37 得分 5
mark
顶Top
18 楼Murder9527(葫芦鬼)回复于 2006-04-26 15:23:03 得分 5
mark
Top
19 楼dahaig(HarryPottor)回复于 2006-04-30 13:43:07 得分 0
我是想靠设计器来实现Top
20 楼anthit()回复于 2006-05-09 10:00:39 得分 5
upTop
21 楼futurekiss2008(小林)回复于 2006-05-09 16:10:27 得分 10
把
mCon .AllowDrop = false;
this.EnableDragDrop(true);
会怎么样呢?
Top




