我正在尝试使用动态按钮关闭动态创建的表单(这是我最简单的工作,我还添加其他按钮来完成其他工作,但我认为这是一个很好的起点)。
截至目前,我可以为该按钮创建表单,按钮和单击事件,但我不知道在单击事件功能中添加什么来关闭该按钮的主机。我猜我可以通过点击功能以某种方式访问父母按钮?或者可以将表单控件作为参数传递给函数?任何帮助表示赞赏!
//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)
{
}
不幸的是我不知道要为功能添加什么!在此先感谢有人给我的任何帮助!我觉得这应该是一个直截了当的问题要解决,但我还没弄清楚......
答案 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(); };