Как отменить регистрацию элемента управления в HelpProvider? - PullRequest
1 голос
/ 12 марта 2010

У меня есть пользовательский элемент управления (называемый «родительский»), который динамически добавляет или удаляет другие элементы управления («дочерний»).

Родитель поддерживает объект HelpProvider, который должен запрашиваться для связанных строк справки, элементы управления которых содержатся в child ('subchild'). Элементы управления дочерних элементов не доступны напрямую, поэтому я планирую предоставить дочернему элементу некоторый метод, позволяющий дочернему элементу заполнять объект HelpProvider (например, public void InstallHelpProvider (HelpProvider)). Поэтому, когда дочерний элемент динамически добавляется к родительскому элементу, родительский объект вызывает InstallHelpProvider для дочернего элемента перед установкой элемента управления.

Я не полностью осведомлен о внутренностях HelpProvider, но я думаю, что он будет поддерживать карту для устанавливаемых элементов управления. Соответственно, я хотел бы удалить записи из справочного провайдера родителя, когда дочерний элемент управления удален из родительского (и если это просто ради того, чтобы не тратить системные ресурсы).

В HelpProvider есть открытый метод ResetShowHelp (Control), который я предполагаю выполнять эту работу. Однако в MSDN говорится, что этот метод является инфраструктурой и не предназначен для непосредственного использования.

Кто-нибудь использовал этот метод в любом случае? Или, может быть, есть другой (предполагаемый) способ, как это сделать? Или, может быть, HelpProvider плохо работает с моим дизайном?

С уважением, jerb

1 Ответ

0 голосов
/ 12 марта 2010

Установка справки на элемент управления выполняется следующим образом (вы уже знаете):

    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);

Я не помню, необходимы ли оба вызова или достаточно первого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...