###自定义控件的设计时问题###

dahaig 2006-04-12 10:50:37
自定义控件,如何能实现在设计时,不允许拖放任何其它控件在其上。
我现在的做法是

以下代码都是在设计器里的
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
就跟没定义设计器一样了,可以任意拖放控件在其中。

请高手指教,谢谢!!!!!!!!!!!!!!!
...全文
597 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
anthit 2006-05-09
  • 打赏
  • 举报
回复
up
futurekiss2008 2006-05-09
  • 打赏
  • 举报
回复

mCon .AllowDrop = false;
this.EnableDragDrop(true);
会怎么样呢?
dahaig 2006-04-30
  • 打赏
  • 举报
回复
我是想靠设计器来实现
葫芦鬼 2006-04-26
  • 打赏
  • 举报
回复
mark
zhf777 2006-04-26
  • 打赏
  • 举报
回复
mark
qpl007 2006-04-21
  • 打赏
  • 举报
回复
要让控件不是容器,直接继承自 Control 不就可以了。
dahaig 2006-04-21
  • 打赏
  • 举报
回复
不仅仅不是容器,而且要在设计时不允许拖放其它toolbox控件在其上
继承control仍然可以拖放其他控件在它上面
huangguangdou 2006-04-19
  • 打赏
  • 举报
回复
study
juneapple123 2006-04-19
  • 打赏
  • 举报
回复
没搞过,学习ing...
帮你顶个
dahaig 2006-04-17
  • 打赏
  • 举报
回复
以上办法都不行,继续顶!求高手!
pshy 2006-04-14
  • 打赏
  • 举报
回复
学习ing.......
liujiwe79 2006-04-14
  • 打赏
  • 举报
回复
可以在构造器中写代码控制属性
wxdl1981 2006-04-14
  • 打赏
  • 举报
回复
This_ControlAdded(...)
{
this.Controls.Remove(e.Control);
}
soye 2006-04-13
  • 打赏
  • 举报
回复
ding
dahaig 2006-04-12
  • 打赏
  • 举报
回复
继承ScrollableControl也是容器
继承System.ComponentModel.Component就成组件了
长江支流 2006-04-12
  • 打赏
  • 举报
回复
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,否则更上一次或设置不可滚动属性

代码蜗牛sky 2006-04-12
  • 打赏
  • 举报
回复
用System.ComponentModel命名空间里面的属性
dahaig 2006-04-12
  • 打赏
  • 举报
回复
控件继承的是userControl
怎么设计属性?
长江支流 2006-04-12
  • 打赏
  • 举报
回复
一个属性就可以搞定,如果你设置是容器他就允许拖了,把它关掉
dahaig 2006-04-12
  • 打赏
  • 举报
回复
顶起来,请高手帮忙!
加载更多回复(1)

110,536

社区成员

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

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

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