表格闭幕活动视觉工作室c#

时间:2017-05-15 09:46:18

标签: c# forms events

直接解决问题: 在我的主要形式中,我有三个按钮,打开三种不同的形式。我会告诉你它是如何构建的。

  • MainForm(这是三个按钮,上面有三个不同的表单名称)

    • 理论 - >点击此按钮即可打开TheoryForm
    • 任务 - >点击此按钮即可打开TasksForm
    • 竞争 - >点击此按钮即可打开CompeteForm

我的TasksForm内部是一个打开TheoryForm的按钮。这是我的代码:

public partial class TasksForm : Form
{
     public TasksForm()
     {
          InitializeComponent();
     }

     public void TheoryButton_Click(object sender, EventArgs e)
     {
          Form TheoryForm_Child = new TeoriForm();
          TheoryForm_Child.Show();
     }
     //Add some code here so that when `TasksForm` closes, the `TheoryForm_Child` closes too.
}

而我无法弄清楚的是,当TasksForm关闭时,TheoryForm也应该关闭,现在它不会关闭。

4 个答案:

答案 0 :(得分:0)

尝试将变量声明为TheoryForm事件处理程序之外的TheoryButton.Click,然后在TaskForm.FormClosing事件处理程序中使用它来关闭它。

public partial class TasksForm : Form
{
    private Form TheoryForm_Child;

    public TasksForm()
    {
        InitializeComponent();
        FormClosing += TaskForm_FormClosing;
    }

    public void TheoryButton_Click(object sender, EventArgs e)
    {
        TheoryForm_Child = new TeoriForm();
        TheoryForm_Child.Show();
    }

    public void TaskForm_FormClosing(object sender, FormClosingEventArgs e)
    {
        if(TheoryForm_Child != null)
            TheoryForm_Child.Close();
    }
}

答案 1 :(得分:0)

仅仅因为TasksForm正在创建TheoryForm并不意味着当TasksForm关闭时,TheoryForm也将如此。相反,您应该明确地关闭它,就像通过在TasksForm中处理已关闭的事件一样。

public partial class TasksForm : Form
{
    Form _TheoryFor_Child = new TheoryForm();

    public TasksForm()
    {
      InitializeComponent();
      Closed += TasksForm_Closed;
    }

    private void TasksForm_Closed(object sender, EventArgs e)
    {
      _TheoryFor_Child.Close();
    }

    private void TheoryButton_Click(object sender, EventArgs e)
    {      
      _TheoryFor_Child.Show();
    }
}

答案 2 :(得分:0)

您需要以某种方式连接父表单和子表单。 例如,在将子表单作为所有者的父表单时。

只需致电

 TheoryForm_Child.Show(this);

答案 3 :(得分:0)

有一个非常简单的解决方案。您应该使用其他版本的Show方法:

Form TheoryForm_Child = new TeoriForm();
TheoryForm_Child.Show(this);

这就是全部。然后你的表格将成为理论形式的所有者。因此它会在关闭后自动销毁理论形式。

更多阅读:https://msdn.microsoft.com/en-us/library/szcefbbd%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396