Как включить / отключить всплывающие подсказки с кодом - PullRequest
1 голос
/ 18 февраля 2020

Как включить / отключить всплывающие подсказки с кодом. Я могу включить всплывающие подсказки для кнопки с кодом при загрузке формы, но не могу отключить всплывающие подсказки с кодом для флажка.

private void Form1_Load(object sender, EventArgs e)
{
    // Create the ToolTip and associate with the Form container.
    ToolTip toolTip1 = new ToolTip();

    // Set up the ToolTip text for a Button.
    toolTip1.SetToolTip(this.btnRunExtApp, "Run the external application");
}

Работает отлично.

Я сейчас пытаюсь сделать пользовательский параметр для включения / выключения всплывающей подсказки с помощью флажка.

private void ChkEnableTips_CheckedChanged(object sender, EventArgs e)
{
    ToolTip toolTip1 = new ToolTip();

    if (ChkEnableTips.Checked == true)
    {
        toolTip1.SetToolTip(this.btnRunExtApp, "Run the external application");
    }
    if (ChkEnableTips.Checked == false)
    {               
        toolTip1.SetToolTip(this.btnRunExtApp, null);
    }
}

Может быть, это потому, что я снова объявляю toolTip1? Я попытался изменить его на toolTip2, но это тоже не сработало. Но если я вообще не объявляю это в ChkEnableTips_CheckedChanged, я получаю сообщение об ошибке (имя «toolTip1» не существует в текущем контексте).

1 Ответ

1 голос
/ 18 февраля 2020

Да, потому что вы объявляете это снова. Запишите в начало вашего класса глобальную переменную.

ToolTip toolTip1 = new ToolTip();

Тогда события (также конструктор) могут использовать ее:

private void ChkEnableTips_CheckedChanged(object sender, EventArgs e)
{
    if (ChkEnableTips.Checked == true)
        toolTip1.SetToolTip(this.btnRunExtApp, "Run the external application");
    if (ChkEnableTips.Checked == false)
        toolTip1.SetToolTip(this.btnRunExtApp, null);
}

Не устанавливать toolTip1 в Load вместо события go в представлении конструктора установите флажок по умолчанию. В любом случае это вызовет событие, и обработчик выше сделает всю работу за вас. Также таким образом вы избегаете второго вызова SetToolTip().

(Кстати, некоторая информация о вашем будущем дизайне, когда вы хотите инициализировать в constructor - вместо Load -: инициализация поля происходит до того, как строк в конструкторе.)

Редактировать:

Возможно, в Toolbox есть компонент с именем ToolTip. Вы можете перетащить. Это ничего не меняет! просто перемещает эту строку:

ToolTip toolTip1 = new ToolTip();

В designer.cs

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