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

簡単な方法は、ラムダメソッドを使用することです。

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