【问题标题】:How do I connect multiple events to a single event handler in C++/CLI?如何在 C++/CLI 中将多个事件连接到单个事件处理程序?
【发布时间】:2015-09-20 04:25:05
【问题描述】:

我想向这个事件处理程序添加多个事件

private: System::Void lblColumn1_Click(System::Object^  sender, System::EventArgs^  e)

我知道在 Visual Basic .Net 中是这样完成的

Private Sub btnCompute_Click(sender As Object, e As EventArgs) Handles btnCompute.Click, btnClickme.Click

但我无法为 C++/CLI 弄明白

有什么想法吗?

【问题讨论】:

  • 我发现了类似 lblHB11->Click += gcnew EventHandler(this, &lblColumn1_Click); 的东西,但它不起作用,并带有几个错误
  • 更正:您想使用该函数处理多个事件。这意味着,我如何将该函数的 handle 添加到多个调用列表(又名代表,又名 EventHandler(s))。
  • 在下面的msdn.microsoft.com/en-us/library/…中,它声明您可以使用委托类型声明一个变量,该变量可以引用与委托具有相同签名的任何方法..中C++/CLI,那个 ref 'variable' 被称为 handle

标签: .net winforms events visual-c++ c++-cli


【解决方案1】:

如果您添加this->lblHB15->Click += gcnew System::EventHandler(this, &MyForm::lblHB16_Click);,标签在顶部创建,通常是它自己的事件

【讨论】:

    【解决方案2】:

    我假设您想将保存事件处理程序连接到不同标签控件的Click 事件。在 Visual Studio 中,以设计模式打开表单,单击标签,打开 Properties 选项卡并转到 Events 列表。对于Click 事件,打开下拉列表并选择要将事件连接到的事件处理程序。

    您也可以手动完成所有这些操作:

    label1->Click += gcnew System::EventHandler(this, &MyForm::label_Click);
    label2->Click += gcnew System::EventHandler(this, &MyForm::label_Click);
    
    System::Void label_Click(System::Object^ sender, System::EventArgs^ e)
    {
    }
    

    【讨论】:

      猜你喜欢
      • 2014-11-30
      • 2011-10-17
      • 2013-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-12
      • 2015-07-30
      • 1970-01-01
      相关资源
      最近更新 更多