UserControl / TreeView Проблема .... Не получить результат во время выполнения - PullRequest
1 голос
/ 26 мая 2010

Моя проблема в том, что я использую TreeView в UserControl. Во время отладки я вижу, что результаты добавляются в TreeView, но этого не происходит, когда я использую этот UserControl в моей MainForm. UserControl, содержащий TreeView, остается пустым во время выполнения основного приложения. Я также ссылался на проект UserControl с моим основным проектом. Здесь я даю свой код, чтобы помочь мне.

Заранее спасибо.

Код

В классе UserControl:

public override void Refresh()
{
   PopulateTreeView();
}
private void PopulateTreeView()
{
   TreeNodeCollection treeNodeCollection;   
   treeNodeCollection = CreateParentNode("My Information");
   CreateChildNode(treeNodeCollection, "Name");
   CreateChildNode(treeNodeCollection, "Address");
   this.Update();
   myTreeView.ExpandAll();
}
private TreeNodeCollection CreateParentNode(string parentNode)
{
   TreeNode treeNode = new TreeNode(parentNode);
   myTreeView.Nodes.Add(treeNode);
   return treeNode.Nodes;
}
private void CreateChildNode(TreeNodeCollection nodeCollection, string itemName)
{
   TreeNode treeNode = new TreeNode(itemName);
   nodeCollection.Add(treeNode);
}

В моей главной форме:

private void button1_Click(object sender, EventArgs e)
{
   UserControl userControl = new UserControl();
   userControl.Refresh();
}

1 Ответ

0 голосов
/ 26 мая 2010

В Click-Event кнопки вы создаете новый UserControl и фактически не используете UserControl, который помещен в MainForm.

Либо вам нужно вызвать Refresh () для UserControl, который находится в вашей MainForm, либо добавить новый созданный UserControl в ControlsCollection MainForm.

Когда вы добавили UserControl с конструктором VisualStudio, MainForm должна содержать переменную с именем userControl1. На этом вы вызываете Refresh (). Затем вы должны увидеть ожидаемый результат и заполненный TreeView.

private void button1_Click(object sender, EventArgs e)
{
  userControl1.Refresh();  // Assume that the name of UserControl is userControl1
}

Если вы хотите использовать новый UserControl каждый раз, когда вы нажимаете кнопку, вы должны добавить элемент управления в коллекцию ControlsCollection MainForm. Но тогда вам нужно выполнить некоторую логику компоновки.

private void button1_Click(object sender, EventArgs e)
{
  UserControl userControl = new UserControl();
  userControl.Refresh();
  this.Controls.Add(userControl);
  // Perform layout logic and possibly remove previous added UserControl
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...