Это не ошибка в вашем приложении или в элементе управления ContextMenuStrip
.Во всяком случае, это ошибка в Windows с элементом управления всплывающим меню, и элементы управления WinForms фактически имитируют эту ошибку, так что они будут вести себя так, как ожидает пользователь.
Вы можете проверить это сами впростое приложение, как Блокнот.Откройте новый экземпляр, щелкните правой кнопкой мыши область документа и нажмите Win + D .Контекстное меню останется открытым и видимым на рабочем столе, даже если окно приложения исчезло (свернуто).
Поэтому я не рекомендую пытаться «исправить» это в вашем приложении.Находясь в Риме, делайте так, как делают римляне ...
Если у вас абсолютно было , чтобы попытаться это исправить, вы можете прослушать событие минимизации дляформы и вручную, чтобы закрыть контекстное меню.
private const int WM_SYSCOMMAND = 0x0112;
private const int SC_MINIMIZE = 0xf020;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_SYSCOMMAND)
{
if (m.WParam.ToInt32() == SC_MINIMIZE)
{
// Close the context menu strip when the form is being minimized
cmsView.Close();
}
}
base.WndProc(ref m);
}