2015-04-26 5 views
2

Свойство изображения не найдено из переменной item. Мой код -Свойство изображения не найдено во время выполнения PictureBox control C#

foreach (Control item in this.Controls) //Iterating all controls on form 
{ 
    if (item is PictureBox) 
    { 
     if (item.Tag.ToString() == ipAddress + "OnOff") 
     { 
      MethodInvoker action = delegate 
      { item.Image= }; //.Image property not shown 
      item.BeginInvoke(action); 
      break; 
     } 
    } 
} 

Любая помощь пожалуйста?

+0

, если какой-либо из ответов достаточно внимания на ваш вопрос, вы можете выбрать его в качестве ответа, поэтому вопрос может быть удален из «без ответа» список. – Alex

+0

@Alex - Хорошо, я собираюсь отметить это. Спасибо. –

ответ

2

Ваш item переменная еще имеет тип Control. Проверка того, что экземпляр, на который он ссылается, равен PictureBox, не меняет этого. Вы можете изменить свой код:

foreach (Control item in this.Controls) //Iterating all controls on form 
{ 
    var pb = item as PictureBox; // now you can access it a PictureBox, if it is one 
    if (pb != null) 
    { 
     if (item.Tag.ToString() == ipAddress + "OnOff") 
     { 
      MethodInvoker action = delegate 
      { 
       pb.Image = ... // works now 
      }; 
      bp.BeginInvoke(action); 
      break; 
     } 
    } 
} 
+0

Это работает. Благодарю. –

+1

Добро пожаловать. Является ли объяснение, почему это работает, и что вы делали, не работает, ясно? – Alex

+0

Надеюсь, теперь это ясно. +1. –

1

Используйте оператор as, например, так:

foreach (Control item in this.Controls) 
{ 
    PictureBox pictureBox = item as PictureBox; 

    if (pictureBox != null) 
    { 
     if (item.Tag.ToString() == ipAddress + "OnOff") 
     { 
      MethodInvoker action = delegate 
      { item.Image= ... }; 
      item.BeginInvoke(action); 
      break; 
     } 
    } 
} 
Смежные вопросы