Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在输入框中单击创建标签_C#_Click_Label_Inputbox - Fatal编程技术网

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();
}