2013-07-09 2 views
0

Есть ли способ переделать существующий элемент управления?Восстановить существующий элемент управления?

Например, если цикл на дерево управления, пока мы не найдем контроль типа bob (очевидно, без каких-либо проверок для бесконечных циклов здесь):

Control parentCtrl = this.parent; 
do 
(
    if(parentCtrl.getType == typeof(bob)) { break; } 
    else { parentCtrl = parentCtrl.parent; } 
) while (true) 

// This is the bit...? 
bob parentCtrl = (bob)parentCtrl; // <-- will not compile as `parentCtrl` has been defined already 

Я знаю, что я могу сделать ((bob)parentCtrl).ctrlSpecificAttribute = "whatever dude..."; будучи, однако, ленивый, я хотел бы сохранить несколько скобок и нажатия клавиш.

Это единственное решение, которое имеет отдельный целевой контроль?

bob targetCtrl = (bob)parentCtrl; 
+1

_ «Единственное решение, которое имеет отдельный целевой контроль?» _ Да, потому что не каждый «Контроль» - это «Боб». –

+0

вы уже можете объявить parentCtrl как bob, если bob extends Класс управления – rajeemcariazo

+0

@rajeem_cariazo: не каждый элемент управления является bob, даже если каждый бит имеет тип управления. –

ответ

1

«Это единственное решение иметь отдельный целевой контроль?»

Да, потому что не каждый ControlявляетсяBob.

Что делать, если я должен использовать var parentCtrl, а затем переделать это? Или есть любое влияние производительности/памяти на использование двух объектов в конечном итоге ?

var не dynamic, поэтому я не уверен, как вы хотите это сделать. Тем не менее, определенно лучше использовать другую переменную для bob и вашего controls.