Marek
Marek

Reputation: 3575

Assign MouseHover event to newly created Control

This is the new control add code part:

        for (int i = 0; i < 1; i++)
        {
            var newLabel = new Label();
            newLabel.Location = new Point(x, y);
            newLabel.Size = new System.Drawing.Size(25, 25);

            newLabel.Name = "lbl" + realpocsed.ToString();

            if (value2== "Value2")
            {
                newLabel.MouseMove += new MouseEventHandler(this.MyControl_MouseMove);
                newLabel.MouseDown += new MouseEventHandler(this.MyControl_MouseDown);
            }
            if (value== "Value1")
            {
                newLabel.MouseDown += new MouseEventHandler(this.MyControl_MouseHover);

            }

            panel1.Controls.Add(newLabel);

The MouseHover event look like this:

        private void MyControl_MouseHover(object sender, MouseEventArgs e)
    {
        ToolTip ToolTip1 = new ToolTip();
        ToolTip1.ShowAlways = true;
        ToolTip1.Show("t", X); // X should be name of the newly created label
    }

May I ask if is there any way to assign the newly created with name "lbl" + realpocsed.ToString() instead of X?

Thank you for your time.

Upvotes: 0

Views: 127

Answers (3)

Shaharyar
Shaharyar

Reputation: 12439

You can't access any object by creating its name in string. The simple way to do that is to pass the object reference:

ToolTip1.Show("t", (sender as Label));

Upvotes: 1

Vladimir
Vladimir

Reputation: 7475

Inside for:

newLabel.MouseHover += delegate (object sender, EventArgs e)
{
    ToolTip ToolTip1 = new ToolTip();
    ToolTip1.ShowAlways = true;
    ToolTip1.Show("t", newLabel);
};

Update:

if (value == "Value1")
{
    newLabel.MouseHover += delegate (object sender, EventArgs e)
    {
        ToolTip ToolTip1 = new ToolTip();
        ToolTip1.ShowAlways = true;
        ToolTip1.Show("t", newLabel);
    };
}

Upvotes: 0

LarsTech
LarsTech

Reputation: 81620

You're assigning a MouseDown event to your MouseHover code, not sure you want that.

It should look like this:

newLabel.MouseHover += MyControl_MouseHover;

For your X, you would have to cast the sender:

ToolTip1.Show("Hover Message Here", (Label)sender);

Upvotes: 2

Related Questions