在运行时创建控件 - 传递数据

时间:2016-07-18 18:59:32

标签: c# .net events dynamic controls

在Windows窗体项目中,我有这个方法来设置动态创建控件的一些属性。在这种情况下,当用户将鼠标悬停在其上时,我还需要显示工具提示。除了一件事,我不知道如何将w [“text”]的值传递给control_MouseEnter。

private void SetProp(ref Control obiekt, Dictionary<string, string> w)
    {
        obiekt.Name = w["id"];
        obiekt.Location = new Point(Convert.ToInt16(w["wspx"]), Convert.ToInt16(w["wspy"]));
        obiekt.Height = Convert.ToInt16(w["wys"]);
        obiekt.Width = Convert.ToInt16(w["szer"]);
        if (w["text"] != "")
        {
            obiekt.MouseEnter += new EventHandler(control_MouseEnter);
            obiekt.MouseLeave += new EventHandler(control_MoouseLeave);
        }
    }

private void control_MouseEnter(object sender, EventArgs e)
    {
        toolTip.Show("how to pass a value here ??", (Control)sender, 5000);
    }

2 个答案:

答案 0 :(得分:0)

如何将文本设置为 $correo = "media@gmaeil.com"; $compruebaCorreo=mysqli_query($link, "SELECT * FROM email WHERE email='$correo'"); while($imprimeCorreo=mysqli_fetch_array($compruebaCorreo)) { if($imprimeCorreo['email']==$correo) { echo "Ya recibió los tps por su suscripción al Boletín de Todopolicia.com"; } if($imprimeCorreo['email'] != $correo) { echo "Registramos el correo"; } echo $imprimeCorreo['email']; } 对象的Tag成员?

S.th。与Control类似,并使用事件处理程序

显示它

答案 1 :(得分:0)

  

我不知道必须将w [&#34; text&#34;]的值传递给control_MouseEnter。

您可以直接将数据与目标控件链接(例如通过Control.Tag属性)或间接链接(例如,通过全局变量/字典),或使用匿名委托和闭包来创建本地数据上下文: / p>

obiekt.MouseEnter += (s,e) => { 
    tooltip.Show(w["text"], (Control)s, 5000);
};
  

有没有办法以某种方式使用EventArgs?

不,你不能。因为args在鼠标事件发生时恰好在Control代码中实例化,并且您无法从事件订阅点控制EventArgs创建。