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 中使用该功能,但我不知道该怎么做。我认为我需要创建一个新的Handler,但我不知道如何。

4

3 回答 3

1

Label有一个Click事件。

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 回答