Вы можете использовать события для передачи сообщений отключенным объектам. Вы можете прослушивать события в Form1 и вызывать их из Form2. Это из памяти, не ожидайте, что он скомпилируется.
Создайте класс, который является «концентратором событий».
public static class EventHub
{
public static event EventHandler<EventArgs> formMessageHandler;
public static void OnFormMessage(object sender, EventArgs e)
{
formMessageHandler?.Invoke(sender, e);
}
}
В событии щелчка кнопки Form2 вызвать событие. Вы можете использовать ссылку отправителя непосредственно для доступа к публикуемым c членам или вы можете поместить соответствующие данные в EventArgs.
EventHub.OnFormMessage(this, EventArgs.Empty);
В Form1, возможно в конструкторе, подключить слушателя:
EventHub.formMessageHandler += some_method_you_write;
Теперь, когда вы нажмете кнопку в Form2, Form1 получит ссылку на Form2 в some_method_you_write () . Или вы можете использовать EventArgs для передачи данных, поэтому вам не нужно создавать какие-либо публичные c элементы управления в Form2.