2

我正在尝试使用动态按钮关闭动态创建的表单(这是我最简单的工作,我还添加了其他按钮来完成其他工作,但我认为这是一个很好的起点)。
到目前为止,我可以为该按钮创建表单、按钮和单击事件,但我不知道在单击事件函数中添加什么来关闭该按钮的主机。我猜我可以通过点击功能以某种方式访问​​按钮父级?或者也许将表单控件作为函数中的参数传递?任何帮助表示赞赏!

        //Create form
        Snapshot snapshot = new Snapshot();
        snapshot.StartPosition = FormStartPosition.CenterParent;

        //Create save button
        Button saveButton = new Button();
        saveButton.Text = "Save Screenshot";
        saveButton.Location = new Point(snapshot.Width - 100, snapshot.Height - 130);
        saveButton.Click += new EventHandler(saveButton_buttonClick);

        //Create exit button
        Button exitButton = new Button();
        exitButton.Text = "Exit";
        exitButton.Location = new Point(snapshot.Width - 100, snapshot.Height - 100);

        //Add all the controls and open the form
        snapshot.Controls.Add(saveButton);
        snapshot.Controls.Add(exitButton);
        snapshot.ShowDialog();

我的点击事件函数看起来很正常:

    void saveButton_buttonClick(object sender, EventArgs e)
    {


    }

不幸的是,我不知道要添加什么功能才能正常工作!提前感谢有人可以给我的任何帮助!我觉得这应该是一个直接解决的问题,但我一直无法弄清楚......

4

2 回答 2

3

虽然使用命名函数当然可以做到这一点,但在这种情况下使用匿名函数通常更简单:

Snapshot snapshot = new Snapshot();
snapshot.StartPosition = FormStartPosition.CenterParent;

//Create save button
Button saveButton = new Button();
saveButton.Text = "Save Screenshot";
saveButton.Location = new Point(snapshot.Width - 100, snapshot.Height - 130);
saveButton.Click += (_,args)=>
{
    SaveSnapshot();
};

//Create exit button
Button exitButton = new Button();
exitButton.Text = "Exit";
exitButton.Location = new Point(snapshot.Width - 100, snapshot.Height - 100);
exitButton.Click += (_,args)=>
{
    snapshot.Close();
};

//Add all the controls and open the form
snapshot.Controls.Add(saveButton);
snapshot.Controls.Add(exitButton);
snapshot.ShowDialog();
于 2012-12-10T01:41:15.970 回答
1

一种简单的方法是使用 lambda 方法:

Button exitButton = new Button();
exitButton.Text = "Exit";
exitButton.Click += (s, e) => { shapshot.Close(); };
于 2012-12-10T01:41:25.140 回答