Close dynamically created form with dynamic button

我的梦境 提交于 2019-12-11 01:36:19

问题


I'm trying to close a dynamically created form with a dynamic button (this is the simplest of my jobs, I am also adding other buttons to do other jobs but I figured this is a good place to start).
As of now I can create the form, button and the click event for that button, but I don't know what to add within the click event function to close the host of that button. I am guessing I can somehow access the buttons parent through the click function? Or maybe pass the form control as an argument in the function? Any help is appreciated!

        //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();

And my click event function looks pretty much normal:

    void saveButton_buttonClick(object sender, EventArgs e)
    {


    }

Unfortunately I don't know what to add for the function to work! Thanks in advance for any help someone can give me! I feel like this should be a straight-forward problem to solve but I haven't been able to figure it out...


回答1:


While it's certainly possible to do this with a named function, it's generally simpler to just use an anonymous function in cases like this:

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();



回答2:


A simple way is to use a lambda method:

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


来源:https://stackoverflow.com/questions/13793490/close-dynamically-created-form-with-dynamic-button

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!