Нет перегрузки для метода setAttribute, который принимает 2 аргумента.

У меня возникли проблемы с установкой нового атрибута для элемента, VS 2005 возвращает мне следующую ошибку в приведенном ниже коде:

Ошибка 1 Нет перегрузки для метода setAttribute принимает 2 аргумента Ошибка 2 Нет перегрузки для метода setAttribute принимает 2 аргумента Ошибка 3 Нет перегрузки для метода setAttribute принимает 2 аргумента

в чем может быть проблема?

Благодарю вас!

try
{
   IHTMLElementCollection AllElements = document.all;
   foreach (IHTMLElement Element in AllElements)
   {                   
      if (Element.tagName.ToUpper() == "IMG")
      {   
         if (Element.offsetHeight <= 40 && Element.offsetHeight >= 20)
         {
            if (Element.offsetWidth <= 160 && Element.offsetWidth >= 130)
            {
               Element.setAttribute("width", Element.offsetWidth);
               Element.setAttribute("height", Element.offsetHeight);
               Element.setAttribute("src", "images/newimage.png");
            }
         }
      }
   }            
}   
catch (Exception e)
{
   string erro = e.Message;
   System.Windows.Forms.MessageBox.Show(erro);
}

person Jean Coelho    schedule 11.11.2013    source источник
comment
RTFM. setAttribute принимает 3 аргумента.   -  person tnw    schedule 12.11.2013
comment
Третий аргумент является необязательным... msdn.microsoft. com/en-us/library/aa752330(v=vs.85).aspx Я не могу найти проблему в коде. однако в IE9 есть известная ошибка, если вы тестируете именно этот браузер. В противном случае, моя единственная мысль, возможно, что Element является зарезервированным словом в javascript и может вызвать некоторые проблемы.   -  person Howard Renollet    schedule 12.11.2013
comment
VS2005 устарел как камень. C# v2 еще не поддерживал необязательные аргументы.   -  person Hans Passant    schedule 12.11.2013
comment
Я не думаю, что голосование против и близкое голосование оправданы. Если бы вы посмотрели его, вы бы увидели, что третий аргумент является необязательным. Я не думаю, что разумно ожидать, что кто-то должен был знать об этом из-за (косвенно) более старой версии компилятора.   -  person Jeroen Vannevel    schedule 12.11.2013


Ответы (1)


Из MSDN: похоже, что третий аргумент должен быть необязательным.

lFlags [in, необязательный] Тип: длинный

LONG, который указывает, следует ли использовать поиск с учетом регистра для поиска атрибута. Может быть одним из следующих значений:

1

Учитывается регистр strAttributeName.

0

Сопоставьте strAttributeName независимо от регистра.

Вы можете попробовать передать 0 или 1.

Element.setAttribute("width", Element.offsetWidth, 0);
Element.setAttribute("height", Element.offsetHeight, 0);
Element.setAttribute("src", "images/newimage.png", 0);

Добавление информации из комментария Ганса выше (как предлагается ниже):

«VS2005 устарел, как камень. C# v2 еще не поддерживал необязательные аргументы». — Ганс Пассант :)

person Derek    schedule 11.11.2013
comment
Вы должны указать, что VS 2005, по-видимому, не поддерживает необязательные аргументы (старая версия компилятора), согласно комментарию Ханса Пассанта. Это реальная проблема здесь. - person Jeroen Vannevel; 12.11.2013