2016-10-13 3 views
-1

Я использую таймер для сделанной анимации, и когда он начинает меняться, я хочу остановиться. «Bir» - моя форма, а «ZamanSayacıA» - мой таймер.Оператор '==' не может быть применен к операндам типа «Толщина» и «строка»

if (Bir.Margin == "510, 410, 0, 0") 
     { 
      ZamanSayacıA.Stop(); 
     } 

Идёт следующее сообщение об ошибке.

оператора «==» не может быть применен к операндам типа «Толщина» и «строка»

+2

Какой тип 'Bir.Margin'? Это не строка и, по-видимому, не имеет неявного преобразования в строку –

+0

попробуйте, если (Bir.Margin == новая маржа (510,410,0,0)) ...... потому что вы сопоставляете маржу с строка, которая не может быть выполнена –

+1

@GiladGreen: это 'Толщина';) –

ответ

2

Вы не можете сравнить Thickness и string с оператором ==, потому как разные типы. Но Thickness имеет конструктор, который поставляется в удобной:

Thickness th = new Thickness(510, 410, 0, 0); 
if(Bir.Margin.Equals(th)) 
{ 

} 

поскольку == operator перегружен вы также можете использовать:

if(Bir.Margin == th) 
{ 

} 

Если у вас есть только строка "510, 410, 0, 0", и вы должны получить a Thickness:

double[] thLengths = Array.ConvertAll("510, 410, 0, 0".Split(','), double.Parse); 
Thickness th = new Thickness(thLengths[0], thLengths[1], thLengths[2], thLengths[3]); 
0

Bir.Margin не string но Thickness. Вы не можете сравнить экземпляр string непосредственно с экземпляром Thickness.

Вы должны создать Thickness сравнить Bir.Margin с:

if (Bir.Margin == new Margin(510,410,0,0))