Показ/Close Toggle Form не работает с Keys Alt + M, пытаясь закрыть форму. Как заставить его работать также при закрытии ⇐ C#

Место общения программистов C#
Anonymous
Показ/Close Toggle Form не работает с Keys Alt + M, пытаясь закрыть форму. Как заставить его работать также при закрытии

Сообщение Anonymous »

Это событие для обнаружения последовательности клавиш: < /p>

Код: Выделить всё

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Alt | Keys.M))
{
ToggleMagnifier();
return true;
}

return base.ProcessCmdKey(ref msg, keyData);
}
< /code>
И вот метод переключения: < /p>
private void ToggleMagnifier()
{
if (magnifierForm == null || magnifierForm.IsDisposed)
{
magnifierForm = new MagnifierForm()
{
Size = new Size(150, 150),
AutoClose = true,
HideCursor = true,
ZoomFactor = 2,
NearestNeighborInterpolation = false
};

magnifierForm.Show();
}
else
{
magnifierForm.Close();
magnifierForm.Dispose();  // Explicitly dispose the form
magnifierForm = null;
}
}
Я добавил точку останова в else в строке:

Код: Выделить всё

magnifierForm.Close();
и на втором нажжении alt + m он достигает линии, а затем, если я продолжу, Magniferform закрывается. Но если я не использую точку останова, форма никогда не закрывается во втором нажжении alt + m .
может ли проблема быть в коде Magnifierform ? В этой части: < /p>

Код: Выделить всё

protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);

mouseDown = false;

if (HideCursor)
Cursor.Show();

if (AutoClose)
Dispose();
}
Я использую код magniferfirm.cs из этого ответа: Использование увеличивающегося стекла вне формы

Подробнее здесь: https://stackoverflow.com/questions/796 ... -close-the

Вернуться в «C#»