如何限制自制Control的使用权限?

sarmoo 2003-08-22 12:16:54
1.自制控件 MyControl:Control
2.自制Form MyForm:Form

问题:
当MyControl被加到一个Form或容器中时,想判断是否此容器类型为MyForm,
是的话则允许加入,正常运行,
不是的话则MyControl自动Dispose,并发出警告信息。

请问该如何实现?
或者有没有其他方式?

...全文
171 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
angelior 2003-09-15
  • 打赏
  • 举报
回复
:)
sarmoo 2003-09-12
  • 打赏
  • 举报
回复
OK,搞定! 方法是:
protected override void OnParentChanged(EventArgs e)
{
if( this.TopLevelControl != null && !(this.TopLevelControl is MyForm) )
{
this.Dispose();
throw new Exception();
}

base.OnParentChanged (e);
}

谢谢各位!结贴!!
wolve 2003-09-11
  • 打赏
  • 举报
回复
建议在onParentChanged中处理,如果在设计时处理,可能用户会在运行时动态添加。
sarmoo 2003-09-02
  • 打赏
  • 举报
回复
楼上:
请问这段代码应放在何处?
另:你给的MSDN地址我打不开,能否给出个关键字?

谢谢!
colin666 2003-09-02
  • 打赏
  • 举报
回复
if(this is MyForm)
{

}
else
{
}

ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/csref/html/vclrfIsPG.htm
维她奶 2003-08-27
  • 打赏
  • 举报
回复
gz
saucer 2003-08-22
  • 打赏
  • 举报
回复
if you mean to do this at design-time, consider to write a custom ControlDesigner for your MyControl, override Initialize method to make sure the passed in component is of MyForm type

see
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemwindowsformsdesigncontroldesignerclasstopic.asp

http://www.tripleasp.net/KBAlertz.aspx?NavID=34
顾君彦 2003-08-22
  • 打赏
  • 举报
回复
if(DesignMode)
{
//判断
//MessageBox.Show(...);
}
sarmoo 2003-08-22
  • 打赏
  • 举报
回复
Yeah, it's in design time.

110,530

社区成员

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

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

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