Ситуация
У меня есть форма
MyMainForm.Show()
, которая имеет подформу, которая не отображается модально
// Not modal, owner is MyMainForm
SubForm.Show(MyMainForm);
Пользователь minimizes
подформой и взаимодействует с MyMainForm, то отображается MessageBox.
// SubForm is still opened, but minimized
// Owner is MyMainForm (same like the opened SubForm)
MessageBox.Show(MyMainForm, "Any message", ...);
Problem
Пользователь не щелкает MessageBox, а вместо этого maximizes
SubForm.
Из-за того, что MessageBox все еще открыт (у которого тот же владелец!), SubForm не принимает никаких вводимых данных, и приложение, кажется, зависает .
Вопрос
Как я могу предотвратить максимизацию SubForm, когда отображается MessageBox с тем же владельцем?
(привязать MessageBox к подформе невозможно)
Что не работает
Я попытался распознать максимизацию, слушая Windows сообщений. Но когда отображается MessageBox, Windows Сообщение не отправляется!
public partial class SubForm : Form
{
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_SYSCOMMAND)
{
// Works well, except when the MessageBox is shown
// then no appropriate message is sent
...
}
}
}