Подпишитесь на пользовательское событие, определенное в «Form» в несвязанном UserControl - PullRequest
0 голосов
/ 28 марта 2019

У меня есть пользовательское событие, определенное в Form, на которое я хочу подписаться в неродственном (то есть не являющемся потомком этой формы) UserControl. Как таковое, событие никогда не обрабатывается в UserControl Чего мне не хватает?

EventTopicNames.cs

public class EventTopicNames
{
    public const string ApplicationClosing = "ApplicationClosing";
}

ShellApplication.cs

    internal class ShellApplication : SmartClientSplashApplication<Microsoft.Practices.CompositeUI.WorkItem, ShellForm, SplashScreen>
    {

    base.Shell.FormClosing += this.Shell_FormClosing

    private void Shell_FormClosing (object sender, System.Windows.Forms.FormClosingEventArgs formClosingEventArgs)
    {
        // notify all modules that the application is closing
        Shell.OnApplicationClosing (new System.EventArgs());

    }
}

ShellForm.cs

public partial class ShellForm : System.Windows.Forms.Form

        [Microsoft.Practices.CompositeUI.EventBroker.EventPublication (Interface.Constants.EventTopicNames.ApplicationClosing, Microsoft.Practices.CompositeUI.EventBroker.PublicationScope.Global)]
        public event System.EventHandler<System.EventArgs> ApplicationClosing;

        protected internal virtual void OnApplicationClosing (System.EventArgs eventArgs)
        {
            if (this.ApplicationClosing != null)
            {
                this.ApplicationClosing (this, eventArgs);
            }
        }

UnrelatedUserControl.cs

public partial class UnrelatedUserControl : System.Windows.Forms.UserControl
{
     [Microsoft.Practices.CompositeUI.Commands.CommandHandler(Infrastructure.Interface.Constants.EventTopicNames.ApplicationClosing)]
    protected internal virtual void OnApplicationClosing(object sender, Infrastructure.Interface.EventArgs<Infrastructure.Interface.Aml.BusinessEntities.Project> eventArgs)
    {
        // do stuff but never called
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...