2010-07-16 2 views
1

Просто начинайте с C#, так что это может быть слишком просто, что я продолжаю его игнорировать ... В главном окне у меня есть стековая панель с именем targetDocArea, которая будет содержать элементы управления. на основе пользовательского ввода, элементы управления отображаются на панели как так:C# wpf как ссылаться на динамически добавленный элемент управления

var htmlView = new System.Windows.Controls.WebBrowser(); 
htmlView.MinHeight = 200; 
htmlView.Height = deskHeight - 225; 
htmlView.Name = "targetDocControl"; 
htmlView.Navigate(dlg.FileName); 
this.targetDocArea.Children.Add(htmlView); 

Теперь у меня есть еще одна функция, которая должна взаимодействовать с этим элементом управления - и вот где я немного потерял. Я бы подумал, что будет какой-то индекс, который я мог бы использовать для ссылки на дочерние элементы панели или непосредственно с использованием имени.

Я читал о «this.registerName», но я не уверен, что это правильный способ подойти к этой проблеме.

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

Спасибо.

ответ

2

Вы должны сохранить контроль в области в своем классе, как это:

private WebBrowser htmlView; 

Вы можете использовать это поле в любой функции.

Если вам нужно хранить несколько копий управления, вы можете использовать List<WebBrowser> field, например:

private List<WebBrowser> htmlViews = new List<WebBrowser>(); 

//Elsewhere: 
htmlViews.Add(something); 
+1

Спасибо за быстрый ответ! Конечно, я пропустил что-то простое. Это делает трюк. -edit (будет принимать ответ после истечения 10-минутного таймера) – WSkid