2010-03-12 21 views
1

我有一个用户控件(称为'父'),它动态添加或删除其他控件('孩子')。如何从HelpProvider注销一个控件?

父级维护一个HelpProvider对象,该对象应该被查询与包含在child('subchild')中的控件相关的帮助字符串。子控件不能直接访问,所以我打算给孩子提供一些让孩子填充HelpProvider对象的方法(例如public void InstallHelpProvider(HelpProvider))。所以,当孩子被动态地添加到父母时,父母会在安装该控件之前调用孩子上的InstallHelpProvider。

我不完全知道HelpProvider内部,但我想它会为正在安装的控件保留一个映射。因此,我想从父母的子控件中删除条目(如果仅仅是为了不浪费系统资源)。

HelpProvider有一个公开的方法ResetShowHelp(Control),我假设这项工作。但是,MSDN表示这种方法是基础设施,并不是直接使用。

有人用过这种方法么?或者也许有另一种(打算)如何做到这一点?或者,也许HelpProvider不适合我的设计?

问候, jerb

回答

0

上的控件安装的帮助是这样的(你已经知道了)完成:

this.helpProvider1.SetShowHelp(this.cityTextBox, true); 
    this.helpProvider1.SetHelpString(this.cityTextBox, "Enter the city here."); 

删除帮助做相反的方式:

this.helpProvider1.SetShowHelp(this.cityTextBox, false; 
    this.helpProvider1.SetHelpString(this.cityTextBox, null); 

我不记得这两个电话是否必要,或者第一个电话是否足够。

+0

好吧,我本可以猜出自己,因为HelpProvider.SetHelpKeyword的备注部分是这样说的(尽管如此,对于SetHelpKeyword)。只是出于兴趣:你从哪里得到这个?只是我没有找到任何简单的测试方法来设置值null真的会删除条目... – jerb 2010-03-12 13:59:28

+0

正如您所写,HelpProvider(以及其他扩展类,如工具提示提供程序)维护着将控件与新数据关联的映射。我想我已经学会了如何通过这样的构造去除工具提示(将null与控件关联)。 – Timores 2010-03-12 15:48:17