Обычно я делаю это, используя взаимодействие объектов, например, предоставляемое моей библиотекой Emesary ;Конструкция состоит в том, чтобы использовать уведомления таким образом, чтобы запрос отправлялся и обрабатывался всем, кто знает, что ему необходимо обработать эти уведомления, поэтому, например, легко добавить дополнительные обработчики событий, которые отключены.
Вв этом случае код для проверки настроек базы данных будет выглядеть следующим образом:
if (ReceiptStatus.OK ==
GlobalNotifier.NotifyAll(new CheckDatabaseIsSetupNotification(tb_Secure_DbName.Text,
tb_Secure_Server.Text,
tb_Secure_Username.Text,
tb_Secure_Password.Text,
true))
{
// do something.
}
Чтобы выполнить эту работу, вам нужно реализовать IReceiver в BushBreaksLodgeManagerMain и в вызове конструктора
GlobalTransmitter.Register(this);
, а затем реализоватьинтерфейс получает:
public ReceiptStatus Receive(INotification _message)
{
if (_message is CheckDatabaseIsSetupNotification)
{
var message = _message as CheckDatabaseIsSetupNotification;
if (connect_to(message.DatabaseName, message.Server, Message.Username, message.Password, message.UseIntergratedSecurity))
return ReceiptStatus.OK;
else
return ReceiptStatus.Fail;
}
return ReceiptStatus.NotProcessed;
}
Вы можете сделать это с помощью событий Windows - но этот способ более понятен и позволяет взаимодействовать с объектами, которые не обязательно имеют окна.