Передача параметров обработчику событий - C#

Узнай цену своей работы

Формулировка задачи:

при запуске программы создаётся массив пикчербоксов и заполняется свойствами. там же создаётся обработчик событий для каждого пикчербокса, но один на всех, а нужно чтобы разные.
        MyObject[] myObj = new MyObject[50];
        ObjectState[] objState = new ObjectState[30];
        PictureBox[] IndicatorImage = new PictureBox[50];
 
        private void LoadObjects()
        {
            IniFile ini = new IniFile(Application.StartupPath.ToString() + "\\objects.cfg");
            Int32 count = ini.GetInt32("EventCount", "Count", 10);
            for (int i = 0; i < count; i++)
            {
                myObj[i] = new MyObject();
                IndicatorImage[i] = new PictureBox();
                myObj[i].objectState = objState[0];
                myObj[i].Name = ini.GetString(i.ToString(), "Name", "NOT_READED");
                myObj[i].Info = ini.GetString(i.ToString(), "Info", "NOT_READED");
                myObj[i].Index = i + 1;
                myObj[i].pictureBox = IndicatorImage[i];
                
                IndicatorImage[i].Name = myObj[i].Name;
                IndicatorImage[i].Anchor = System.Windows.Forms.AnchorStyles.None;
                IndicatorImage[i].BackColor = System.Drawing.Color.Transparent;
                IndicatorImage[i].Image = global::Map_5_Client.Properties.Resources.obj;
                IndicatorImage[i].Size = new System.Drawing.Size(32, 28);
                IndicatorImage[i].Location = new System.Drawing.Point(ini.GetInt32(i.ToString(), "LocationX", 0), ini.GetInt32(i.ToString(), "LocationY", 0));
                IndicatorImage[i].Click += new EventHandler(this.IndicatorImage_Click);
                pictureBox1.Controls.Add(IndicatorImage[i]);
            }
        }
 
        private void IndicatorImage_Click(object sender, EventArgs e)
        {
            PictureBox currentPictureBox = (PictureBox)sender;
            ObjectDialog(myObj[1]);
        }
вот нужно чтобы вместо красной единички ObjectDialog(myObj[1]) передавался индекс i. насколько я знаю, через параметры обработчика нельзя передать.

Решение задачи: «Передача параметров обработчику событий»

textual
Листинг программы
int index = Array.IndexOf(IndicatorImage, currentPictureBox);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.286 из 5
Похожие ответы