C# 在输入框中单击创建标签
我有一个函数,C# 在输入框中单击创建标签,c#,click,label,inputbox,C#,Click,Label,Inputbox,我有一个函数,private void sentmail()在Form1中。我想把这个函数用于输入框中的标签 我使用的输入框如下所示: 我创建了一个新类并添加了InputBox的代码 在InputBox中,我创建了标签: Label label2 = new Label(); label2.Text = mesaj; label2.Cursor = Cursors.Hand; 现在我需要这样做:当输入框出现时,当我单击label2,使用Form1中的函数时。label2是一个文本,用于接收密码
private void sentmail()
在Form1
中。我想把这个函数用于输入框中的标签
我使用的输入框如下所示:
我创建了一个新类并添加了InputBox的代码
在InputBox中,我创建了标签:
Label label2 = new Label();
label2.Text = mesaj;
label2.Cursor = Cursors.Hand;
现在我需要这样做:当输入框出现时,当我单击label2
,使用Form1
中的函数时。label2
是一个文本,用于接收密码、函数工作,但我需要使用InputBox中的函数,但我不知道如何执行此操作。
我想我需要创建一个新的处理程序,但我不知道如何创建。标签
有一个事件
将
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);
我建议您在另一个类中使用
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();
}
函数sentMail不在Inputbox中,其格式为1。不要以你的方式工作。label2.Click+=委托{sentEmail();}-错误:;Expected@AnDr3yy您没有说标签是否在
Form1
中创建,我只是假设了这一点。见更新。非常感谢你,穆奇!!很好用!Tnx的答案。我不尝试你的方法,因为大黄仙人掌的方法非常有效。但是tnx!!很高兴你解决了这个问题;)
//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();
}