Я бы добавил свойство к Form2
, чтобы сообщить форме, которая мне нравится, для автоматического выполнения действия.
class Form2
{
public bool AutoExecuteSomeOperation { get; set; }
}
В Form1
вы бы задали это свойство, а в Form2
вы быпроверьте и выполните соответствующий код, если свойство установлено.
Я бы порекомендовал вам выполнить рефакторинг button_Click
для вызова другого метода, который вы также можете вызвать для автоматического выполнения.Мне нравится, чтобы обработчик событий был простым и выполнялся только для события в элементе управления, который служил для имени обработчика события.Таким образом, вы знаете, что button_Click
является обработчиком для события Click
в элементе управления с именем button
.Это облегчает поддержку кода.
Вы можете решить, хотите ли вы сбросить свойство после выполнения кода, или можете добавить некоторую проверку того, что изменения свойства действительны.Например, вы можете убедиться, что свойство вызывается перед отображением формы.
Во всех случаях следует избегать ссылки на элемент управления из внешней формы.Только Form1
сам должен знать, что он содержит кнопку.Любое использование из внешнего мира должно быть сделано через публичную собственность или публичное мероприятие в форме.Таким образом, если вы решите, что кнопка должна быть заменена гиперссылкой, пунктом меню, флажком или чем-то еще, Form1
обновлять не нужно.Это очень похоже на то, что должно быть сделано для UserControl
.Чем меньше утечек внутренних деталей, тем легче будет внести внутренние изменения без необходимости обновления всех вызывающих абонентов.