【问题标题】:c# eventArgs form eventsc# eventArgs 表单事件
【发布时间】:2017-03-10 10:39:30
【问题描述】:

我有多个具有相同设计的表单,例如:

In Form1{
Form2 = new Formtoopen();
Form2.Resize += new EventHandler(Form2_Resize);
Form2.FormClosing +=new FormClosingEventHandler(Form2_FormClosing);
}

然后是事件:

In Form1{
protected virtual void Fly_Form2_Closing(object sender, FormClosingEventArgs e)
{
   if (e.CloseReason == CloseReason.UserClosing)
   {
      e.Cancel = true;
      Fly_Form2.Hide();
   }
}

protected virtual void Fly_Form2_Visiblechanged(object sender, EventArgs e)
{
   //some code
}
}

我想在现在为空的 EventArgs 中添加 Form2 类型。 我认为这会使我的代码更简单,因为我有多个表单共享相同的代码。

我怎么能这样做?我考虑了事件自定义参数的方式,但我不确定 Type...

你能帮帮我吗?

谢谢

【问题讨论】:

  • 为什么要在其中包含类型。由于事件是由表单本身触发的,所以 this.Hide() 应该做你想做的事。或者更确切地说,由于表单是发送者将其转换为表单类型,然后将其隐藏。
  • 你好,因为当我这样做时。隐藏它会将 Form1 隐藏在我的 Form2 后面。代码在 Form1 中,我从中打开所有表单并从 Form1 处理它们。所以当我调用 this.Hide 时我在 Form1 中,它隐藏了 Form1 而不是我看到的表单......
  • 银盘上交给你:((Form)sender).Hide();

标签: c# events types custom-events


【解决方案1】:

以下是可行的:

 In Form1{
Form2 = new Formtoopen();
Form3 = new Formdata();
Form2.FormClosing +=new FormClosingEventHandler(Form_FormClosing);
Form3.FormClosing += new FormClosingEventHandler(Form_FormClosing);
}

 In Form1{
protected virtual void Form_Closing(object sender, FormClosingEventArgs  e)
{
if (e.CloseReason == CloseReason.UserClosing)
{
  e.Cancel = true;
  ((Form)sender).Hide();
}
}

从对象发送者中检索带有强制转换表单的发送者。

非常感谢 M.Passant!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多