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

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

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

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

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

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

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


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

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

7   голосов , оценка 4.286 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы