У меня есть приложение WinForms, содержащее ToolStrip с ToolStripButtons. Некоторые действия кнопки отключают основную форму, когда действие кнопки происходит и снова включается, когда закончилось. Это делается для того, чтобы пользователь не нажимал на другие места во время действия, а также показывает WaitCursor, но это не относится к проблеме.ToolStripButton по-прежнему выделяется, когда форма отключена/включена
Если пользователь нажимает на кнопку и перемещает курсор мыши за пределы своей границы, пока форма отключена, кнопка остается подсвеченной (прозрачной синей) даже при повторном включении формы в более поздней точке. Если указатель мыши снова войдет/покинет кнопку, он снова отобразится правильно.
Я могу искусственно реплицировать проблему, показывая MessageBox, используя следующий код (фактическое действие не отображает окно сообщения, но открывает новую форму и заполняет сетку, но сетевой эффект тот же).
Вот фрагмент кода, чтобы повторить вопрос:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
// Disable the form
Enabled = false;
// Some action where the user moved the mouse cursor to a different location
MessageBox.Show(this, "Message");
// Re-enable the form
Enabled= true;
}
}
ли Вы, попробуйте добавить 'this.Refresh();' как первую строку в 'toolStripButton1_Click'? – ispiro
Я теперь попробовал ваш код, и синий фон исчезает, когда я закрываю MessageBox. – ispiro
@ispiro Пробовал с 'this.Refresh();' но проблема все еще происходит. Возможно, вы закрыли MessageBox с помощью Enter вместо нажатия мышью? Не уверен, что это актуально, но я использую Visual Studio 2013 и .NET Framework 4.5. – Andres