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