【问题标题】:Open a new winform by doubleclick and close the caller window双击打开一个新的winform并关闭调用者窗口
【发布时间】:2013-10-06 19:57:07
【问题描述】:

我有一个名为Form1 的C# winform,这个winform 有一个列表和一个按钮。 我在按钮中添加了一个click() 事件,在列表中添加了一个doubleclick() 事件。 两个事件都调用相同的方法:(在 form1.designer.cs 中)

this.myList.DoubleClick += new System.EventHandler(this.myMethod);
this.myButton.Click += new System.EventHandler(this.myMethod);

myMethod,我想做如下操作:

  1. 打开一个类型为Form2 的新winform,并将其设为活动的winform。

  2. 关闭调用方winform(类型为Form1),不再需要此表单。

我是这样做的:(在 form1.cs 中)

private void myMethod(object sender, EventArgs e)
{
     Form2 frm = new Form2();                 
     this.dispose();
}

myMethod被列表双击事件调用时,当myMethod结束时,出现空指针异常。 当它被按钮点击事件调用时,它可以正常工作。

我也尝试了this.close(),并得到了相同的行为。

我的问题:

  1. 我应该如何正确编写myMethod,这样它才能对按钮单击事件和列表双击事件进行所需的操作?

  2. 按钮和列表有什么区别?为什么按钮可以正常工作,但列表会崩溃?

谢谢

【问题讨论】:

  • 调用表单真的关闭了吗?
  • 您应该调用 Form.Close 方法,而不是 Dispose。 msdn.microsoft.com/en-us/library/…
  • 我试过这个。也关闭,同样的问题。
  • neoistheone,form1 实际上正在关闭。在我看来,这可能是例外的原因。但我不明白按钮点击效果如何。
  • 这是真正的代码吗?是否在其他地方引用了 Form1 的实例?

标签: c# winforms


【解决方案1】:

您可以隐藏Form1 并显示Form2。这会引发一些问题,例如关闭 Form2 不会关闭Form1

this.Hide();
var form2 = new Form2();
form2.ShowDialog();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多