如果此方法中的逻辑是从Button_Click
之类的事件处理程序运行的,那么它可以正常工作,但是,当从下面的方法运行它时,我会收到错误:
hostView.SelectedNode.Nodes.Add(newNode);
对象引用未设置为对象的实例。
这是我的代码:
private void SetupHostTree()
{
// Set internal host names
using (var reader = File.OpenText("Configuration.ini"))
{
List<string> hostnames = ParseInternalHosts(reader).ToList();
foreach (string s in hostnames)
{
TreeNode newNode = new TreeNode(s);
hostView.SelectedNode.Nodes.Add(newNode);
string title = s;
TabPage myTabPage = new TabPage(title);
myTabPage.Name = s;
tabControl1.TabPages.Add(myTabPage);
}
}
}
答案 0 :(得分:1)
也许没有选定的节点:)
答案 1 :(得分:1)
可能是因为hostView
TreeView中没有选择任何节点。
documentation表示当前未选择任何节点时,TreeView.SelectedNode
属性将返回null
。由于您已将其组合到表达式中,因此整个表达式失败,因为Nodes
对象上没有null
个集合!
试试这段代码:
private void SetupHostTree()
{
// Set internal host names
using (var reader = File.OpenText("Configuration.ini"))
{
List<string> hostnames = ParseInternalHosts(reader).ToList();
foreach (string s in hostnames)
{
// Ensure that a node is currently selected
TreeNode selectedNode = hostView.SelectedNode;
if (selectedNode != null)
{
TreeNode newNode = new TreeNode(s);
selectedNode.Nodes.Add(newNode);
}
else
{
// maybe do nothing, or maybe add the new node to the root
}
string title = s;
TabPage myTabPage = new TabPage(title);
myTabPage.Name = s;
tabControl1.TabPages.Add(myTabPage);
}
}
}