Проблемы с обновлением ToolstripDropdownButton после того, как окно теряет фокус

Позвольте мне начать с простого примера, чтобы воспроизвести мою проблему:

  1. Создать проект WinForms.
  2. Оставьте ToolStrip на нем.
  3. Сделайте в нем ToolstripDropdownButton (без дочерних элементов).
  4. Добавьте обработчик события click к кнопке примерно так:

    MessageBox.Show("text", "Caption");
    

    (смысл в том, чтобы основная форма потеряла фокус).

Чтобы сделать проблему более очевидной, давайте сделаем несколько ненужных дополнений:

  1. Установите RenderMode нашего ToolStip равным ManagerRenderMode.
  2. Установите для Autosize значение false и увеличьте его.

И этого должно быть достаточно, чтобы воспроизвести это. Запустите приложение и нажмите кнопку. Вы получите всплывающее окно. Закройте всплывающее окно и вуаля... теперь кнопка выглядит так, как будто кто-то держит ее нажатой.

Любые идеи о том, как сбросить его в его состояние по умолчанию?

Я пытался вызвать кнопки ResetBackColor, Refresh ... также как ToolStrips. Кажется, не работает. Может я что-то упустил?

1 ответ

Решение

MessageBox или модальная форма будут мешать этому. В раскрывающемся меню ожидаются элементы детского меню.

Пример работы вокруг:

private void toolStripDropDownButton1_Click(object sender, EventArgs e) {
  this.BeginInvoke(new Action(() => MessageBox.Show("Help")));
}
Другие вопросы по тегам