使用动态按钮关闭动态创建的表单

时间:2012-12-10 00:38:18

标签: c# dynamic

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

        //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)
    {


    }

不幸的是我不知道要为功能添加什么!在此先感谢有人给我的任何帮助!我觉得这应该是一个直截了当的问题要解决,但我还没弄清楚......

2 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

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

Button exitButton = new Button();
exitButton.Text = "Exit";
exitButton.Click += (s, e) => { shapshot.Close(); };