0

に関数がありprivate void sentEmail()ますForm1。そして、その関数をInputBoxのラベルに使用したいと思います。

私が使用するInputBoxは次のとおりです:http ://www.csharp-examples.net/inputbox/

新しいクラスを作成し、InputBoxのコードを追加します。

InputBoxで、ラベルを作成します。

Label label2 = new Label();
label2.Text = mesaj;
label2.Cursor = Cursors.Hand;

次に、これを作成する必要があります。InputBoxが表示されたとき、をクリックしたときにlabel2、からの関数を使用しますForm1。これlabel2はパスワードを受け取るためのテキストであり、関数は動作しますが、InputBoxで関数を使用する必要がありますが、これを行う方法がわかりません。新しいハンドラーを作成する必要があると思いますが、方法がわかりません。

4

3 に答える 3

1

Labelクリックイベントがあります。

label2.Click += delegate {
    form1.sendEmail();
}
于 2012-08-01T08:25:30.143 に答える
1

InputBoxメソッドを次のように変更します

public static DialogResult InputBox(string title, string promptText, ref string value, Action labelClickCallback)

そのコールバックを Click イベントに追加します。

Label label2 = new Label();
label2.Text = mesaj;
label2.Cursor = Cursors.Hand;
label2.Click += (s, e) => labelClickCallback(); // Create a new event handler

メソッドを呼び出すInputBoxときに、ユーザーがラベルをクリックしたときに呼び出されるメソッドにメソッドを渡すことができるようになりました。次のように呼び出しInputBoxます。

InputBox("Title", "Text", ref result, sentEmail);
于 2012-08-01T08:41:35.703 に答える
0

SendMail()ではなく、他のクラスでメソッドを使用することをお勧めForm1します。他の場所で使用することをお勧めします。

public class MailController
{
    public void SendEmail()
    {
        //Code
    }
}

そして、あなたのフォームでは、それを含むクラスをインスタンス化した後に呼び出すだけです

//Your form containing the InputBox
private void Form1_Load(object sender, EventArgs e)
{
    Label label2 = new Label();
    label2.Text = mesaj;
    label2.Cursor = Cursors.Hand;

    label2.Click += OnLabelClick;
}

private void OnLabelClick(object sender, EventArgs e)
{
    MailController controller = new MailController();
    controller.SendMail();
}
于 2012-08-01T08:42:31.410 に答える