C# 将按钮事件返回到objectListView表单并正常退出

C# 将按钮事件返回到objectListView表单并正常退出,c#,button,event-handling,click,objectlistview,C#,Button,Event Handling,Click,Objectlistview,还在学c。我正在创建一个ObjectListView,其中包括捕获按钮点击 public partial class MainForm : Form { private FormSpecParser parser; private static ObjectListviewForm form; public MainForm() { InitializeComponent(); createMainForm();

还在学c。我正在创建一个ObjectListView,其中包括捕获按钮点击

    public partial class MainForm : Form
    {
    private FormSpecParser parser;
    private static ObjectListviewForm form;

    public MainForm()
    {
        InitializeComponent();
        createMainForm();
    }

    private void createMainForm()
    {
        form = new ObjectListviewForm();
        form.Populate(parser.ParsedSpec);
        form.Show(this);
        }
    }


public partial class ObjectListviewForm : Form
{
    ...
        void b_Click(object sender, EventArgs e)
        {
            Button b = sender as Button;
            if (b == null) return;
            var button = GetFormSpecButton(b.Name);

            MessageBox.Show(button.ClickMessageBoxStub);
        }
}
我有两个问题:1)如何让ObjectListView告诉MainForm某个按钮被单击,请处理它

2) 我希望ObjectListView表单是用户看到的第一个表单,当ObjectListView窗体关闭时,程序将关闭。现在ObjectListView表单确实出现了,但“后面”是一个空白表单,当ObjectListView表单关闭时,控件似乎会传递回这个空白表单,而不是退出。

1)您将MainForm作为所有者传递给Show方法-Form.Show(此)。这意味着在ObjectListviewForm中,可以从MainForm调用方法,如下所示:

(this.Owner as MainForm).MethodInMainform();
   Application.Run(new MainForm());
2) 在Program.cs文件中,您应该有如下行:

(this.Owner as MainForm).MethodInMainform();
   Application.Run(new MainForm());
将其更改为:

Application.Run(new ObjectListviewForm ());