创建标签单击InputBox

时间:2012-08-01 08:21:31

标签: c# click label inputbox

我在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中使用该函数,但我不知道如何执行此操作。 我认为我需要创建一个新的处理程序,但我不知道如何。

3 个答案:

答案 0 :(得分:1)

Label有一个Click事件。

label2.Click += delegate {
    form1.sendEmail();
}

答案 1 :(得分: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);

答案 2 :(得分: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();
}