双击不适用于Label

时间:2016-02-26 12:10:46

标签: c# winforms label flowlayoutpanel

我想在form label之后打开double clicked。 我的代码:

else if (e.Clicks == 2)
{
    foreach (var control in myFLP.Controls)
    {
        if(control is Label)
        {
            var Id = mylabel.Name.ToString();
            int personID;

            if (!String.IsNullOrWhiteSpace(Id) && int.TryParse(Id, out personID))
            {
                Form frm = new Form(_controller, personID);
                frm.ShowDialog();
                frm.Dispose();
            }
            else 
            {
                Form2 frm2 = new Form2();
                frm2.ShowDialog();
                frm2.Dispose();
                Console.WriteLine("Hello");
            }
        }
    }
}

double click {i} label什么时候没有发生?所以我尝试在不传递任何参数的情况下调用Form frm = new Form();。表单在double click之后打开,但是对myFLP中的每个标签保持打开状态?

编辑1: 我添加了ELSE。我认为我的情况不正确。

2 个答案:

答案 0 :(得分:1)

您可能订阅了事件Control.Click。您应该订阅事件Control.DoubleClick。

如果您使用的是Visual Studio设计器,请在双击时选择要作出反应的标签;转到属性(-enter),选择闪存以查看所有事件,然后在“操作”类别中查找DoubleClick。

在函数InitializeComponent()中(请参阅表单的构造函数)您将看到类似于:

的内容
this.label1.DoubleClick += new System.EventHandler(this.label1_DoubleClick);

事件处理功能:

private void label1_DoubleClick(object sender, EventArgs e)
{
    // sender is the label that received the double click:
    Debug.Assert(Object.ReferenceEquals(sender, this.label1));

    Label doubleClickedLabel = (Label)Sender;
    var Id = doubleClickedLabel.Text;
    int personID;
    if (!String.IsNullOrWhiteSpace(Id) && int.TryParse(Id, out personID))
    {   // open form. Note the use of the using statement
        using (Form frm = new Form(_controller, personID)
        {
            frm.ShowDialog();
        }
    }
    else 
    {
        using (Form2 frm2 = new Form2())
        {
            frm2.ShowDialog();
        }
    }
}

答案 1 :(得分:0)

我认为你正在检查错误的标签。 以下一行

var Id = mylabel.Name.ToString();

应改为

var Id = control.Name.ToString();