Отключение доступа к форме при открытии новой формы из библиотеки классов C#

У меня есть две формы окна Form1 а также Form2 и библиотека классов aC# CLProduct,

Сейчас, Form1 уже открыт и метод в CLProduct класс называется который показывает Form2 и на данный момент я хотел бы ограничить доступ к Form1 до тех пор Form2 закрыто.

У меня есть код ниже в моем методе в CLProduct, который загружает

var _frm2= new Form2();
_frm2.ShowDialog();

я знаю это ShowDialog загружает модальный, который по умолчанию ограничивает доступ к Form1, когда ShowDialog вызывается из Form1, но в моем сценарии ShowDialog на самом деле вызывается из класса, который по понятным причинам не ограничивает Form1 как это не называется из Form1

Form2 работает в рабочем потоке, который создан в Form1 следующим образом

                if (pPBackgroundWorker.IsBusy == false)
                {                   
                    // Start the asynchronous operation.
                    pPBackgroundWorker.RunWorkerAsync();
                }

Есть ли способ справиться с этим из Form1_Load()?

1 ответ

Вы должны просто быть в состоянии позвонить ShowDialog за From2 и передать Form1 в качестве аргумента и получить желаемое поведение. (_frm2.ShowDialog(_frm1))

Но, как отмечает HansPassant в комментариях, если Form2 не находит подходящего владельца, скорее всего, это означает, что он работает в рабочем потоке, что может привести к некоторым довольно неприятным ошибкам / проблемам.

Другие вопросы по тегам