Tworzenie eventu dla kontrolek z listy

0

Cześć,

Nie bardzo wiem jak zapisać poprawnie fragment kodu.
W jednej metodzie tworzą mi się w pętli nowe "labele" i zapisuje je do listy. Chciałbym im nadać taką właściwość, że po dwukrotnym kliknięciu obrócą się o 90 stopni. Sprawa dla mnie prosta, gdy mogę zrobić event mając kontrolkę w designerze. Niestety nie wiem jak temat ugryźć, aby działał w opisanym przypadku.

private void CreatePalleteVisualisation(int palletsAmount, string customerName)
        {
            int posX = 12;
            for (int i = 0; i < palletsAmount; i++)
            {               
                if (i > 0)
                    posX += 70;   
                listOfLabels.Add(new Label());
                listOfLabels[i].Text = customerName;
                listOfLabels[i].Location = new Point(posX, 650);
                this.Controls.Add(listOfLabels[i]);
                listOfLabels[i].BringToFront();
                listOfLabels[i].BackColor = Color.Yellow;
                listOfLabels[i].Size = new Size(64, 96);

                ControlExtension.Draggable(listOfLabels[i], true);



                

            }
 
0

Designer to taki trik i tak na końcu zawsze jest generowany kod. Możesz sobie zrobić delegatę i przypisać ją ręcznie do eventu w labelu.

0

Zobacz sobie na kod wygenerowany w *.Designer.cs, szczególnie na miejsce w którym masz podpięty event zrobiony w designerze.

1

W kodzie dla tworzonych kontrolek:

 lbl.DoubleClick += Lbl_DoubleClick;

private void Lbl_DoubleClick(object sender, EventArgs e)
    {
    //no a tutaj kod do obracania (rysowania)
    }
0

Rozumiem ideę tworzenia eventu, tylko w momencie, gdy powstanie 10 obiektów i użytkownik kliknie np. 7 obiekt, to w jaki sposób mam przekazać info, z którym obiektem ma się coś stać. Rozumiecie na czym polega moja trudność ?

1

CreatePalleteVisualisation

palette

w jaki sposób mam przekazać info, z którym obiektem ma się coś stać. Rozumiecie na czym polega moja trudność

sender jest kontrolką, która zgłasza zdarzenie.

0

Ech...dobra, temat do zamknięcia.

0
EventHandler rotate = (object from, EventArgs args) =>
{
//Rotate();
};
listOfLabels[ii].DoubleClick += rotate;
 
0

Skoro temat wywołany znowu to już wkelję dla potomnych.
Tutaj event,


 private void palette_DoubleClick(object sender, EventArgs e)
        {
            Label x = (Label)sender;
            int currentHeight = x.Height;
            int currentWidth = x.Width;
            // Rotacja
            x.Size = new Size(currentHeight, currentWidth);          
        }

a tutaj jego wywołanie

listOfLabels[i].MouseDoubleClick += new MouseEventHandler(palette_DoubleClick);
 

1 użytkowników online, w tym zalogowanych: 0, gości: 1