У меня странная проблема. Я пишу проект Windows Forms и хочу использовать всплывающие подсказки. Вот как примерно я их использую:
ToolTip tooltip = new ToolTip();
tooltip.SetToolTip(someControl, someString);
Он хорошо работает в других местах проекта, но в случае использования одного объекта ToolTip в одной форме в одном проекте его подсказки не отображаютсяесли я не использую отладчик . То есть все отлично работает в режиме отладки с отладкой или в режиме выпуска с отладкой, но в любом режиме без отладки всплывающие подсказки просто не отображаются. Другие объекты всплывающей подсказки в том же классе, которые я использую вместе с методом ToolTip.Show вместо метода SetToolTip, работают! А в других проектах использование метода SetToolTip работает так же хорошо.
Что я пытался
Я сделал событие MouseHover, которое выглядело так:
private void someControl_MouseHover(object sender, EventArgs e)
{
tooltip.Show("Test", someControl);
SystemSounds.Exclamation.Play();
}
Событие явно сработало, потому что я мог слышать звук, но я все еще могне вижу подсказки без отладчика! Поэтому я сделал это изменение:
private void someControl_MouseHover(object sender, EventArgs e)
{
tooltip = new ToolTip();
tooltip.Show("Test", someControl);
SystemSounds.Exclamation.Play();
}
, и теперь я мог видеть подсказку даже без отладчика, но только на этом конкретном элементе управления (что имело смысл, поскольку я создал новый объект ToolTip).
Так что я подумал, что, поскольку это помогло, может быть, что-то в том, как был инициализирован мой объект всплывающей подсказки (строка «ToolTip tooltip = new ToolTip ();» была объявлением частного поля), поэтому я вставил «ToolTip tooltip =new ToolTip (); "в конструкторе Form непосредственно перед вызовом методов SetToolTip, но это не помогло. Это не поможет, даже если я инициализирую всплывающую подсказку вне конструктора Form.
Другая интересная вещь заключается в том, что после попытки сборки без отладчика и последующего использования отладчика подсказки по-прежнему не отображаются! Мне нужно пересобрать решение, чтобы они снова работали с отладчиком.
Я тоже попробовал встроенный .exe на другом компьютере, и всплывающие подсказки там тоже не отображаются.
ЕслиЯ использую представление «Дизайн» формы для создания объекта ToolTip, а затем вручную устанавливаю подсказки для каждого элемента управления в представлении «Дизайн», происходит то же самое! Возможно, потому, что он также вызывает этот метод SetToolTip.
Я также попытался выполнить чистую установку VS 2015 Professional (v 14.0.25431.01 Update 3) безуспешно.
Мое подозрение
Я думаю, что должно быть что-то, что меняется, когда сборка проекта запускается без отладчика, так как это изменение остается до тех пор, пока решение не будет перестроено. Но поскольку я не являюсь инженером-программистом и не знаю, что Visual Studio на самом деле делает по-другому с моим кодом, если я использую отладчик по сравнению с тем, когда я его не использую, я понятия не имею, как решить эту проблему. Я даже не знаю, какую информацию вам предоставить. Проект огромен, и я подозреваю, что проблема не воспроизводима, так как я думаю, что проблема не в коде, а в некоторых настройках VS. Я просто надеюсь, что кто-то может указать мне правильное направление.
Проект, в котором возникает эта проблема, использует NET 4.5.2, как и все остальные, и нет никаких различий с этим проектом, который я обнаружил.
Также похоже, что проблема связана с методом ToolTip.SetToolTip, так как метод ToolTip.Show работает нормально.
TL;DR
Одна из моих подсказок WinForms прекрасно отображается, если я использую отладчик, и вообще не отображается, если я не использую. Это единственное, что кажется сломанным.