未能创建 UserControl "Path.UserControl1"
错误信息是"未将对象引用设置到对象的实例。"--------------------------------------
UserControl.cs
-------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;namespace Path
{
public partial class UserControl1 :UserControl
{
public UserControl1()
{
InitializeComponent();
InitTree();
}
public void InitTree()
{
string[] LogicDrives = System.IO.Directory.GetLogicalDrives();
TreeNode[] cRoot = new TreeNode[LogicDrives.Length];
for (int i = 0; i < LogicDrives.Length; i++)
{
TreeNode drivesNode = new TreeNode(LogicDrives[i]);
treeView1.Nodes.Add(drivesNode);
if (LogicDrives[i] != "A:\\" && LogicDrives[i] != "B:\\")
{
getSubNode(drivesNode, true);
}
}
}
private void getSubNode(TreeNode PathName, bool isEnd)
{
if (!isEnd)
{
return; //exit this
}
else
{
DirectoryInfo curDir = new DirectoryInfo(PathName.FullPath);
DirectoryInfo[] subDir = null;
try
{
subDir = curDir.GetDirectories();
}
catch
{
}
foreach (DirectoryInfo d in subDir)
{
TreeNode curNode = new TreeNode(d.Name);
PathName.Nodes.Add(curNode);
getSubNode(curNode, false);
}
}
}
private void treeView1_AfterExpand(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
try
{
foreach (TreeNode tn in e.Node.Nodes)
{
if (!tn.IsExpanded)
{
getSubNode(tn, true);
}
}
}
catch { ;}
} private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
listView1.Items.Clear();
DirectoryInfo selDir = new DirectoryInfo(e.Node.FullPath);
DirectoryInfo[] listDir = null;
FileInfo[] listFile = null;
try
{
listDir = selDir.GetDirectories();
listFile = selDir.GetFiles();
}
catch { }
foreach (DirectoryInfo d in listDir)
{
listView1.Items.Add(d.Name, 6);
}
foreach (FileInfo d in listFile)
{
listView1.Items.Add(d.Name);
}
}
}
}
错误信息是"未将对象引用设置到对象的实例。"--------------------------------------
UserControl.cs
-------------------------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;namespace Path
{
public partial class UserControl1 :UserControl
{
public UserControl1()
{
InitializeComponent();
InitTree();
}
public void InitTree()
{
string[] LogicDrives = System.IO.Directory.GetLogicalDrives();
TreeNode[] cRoot = new TreeNode[LogicDrives.Length];
for (int i = 0; i < LogicDrives.Length; i++)
{
TreeNode drivesNode = new TreeNode(LogicDrives[i]);
treeView1.Nodes.Add(drivesNode);
if (LogicDrives[i] != "A:\\" && LogicDrives[i] != "B:\\")
{
getSubNode(drivesNode, true);
}
}
}
private void getSubNode(TreeNode PathName, bool isEnd)
{
if (!isEnd)
{
return; //exit this
}
else
{
DirectoryInfo curDir = new DirectoryInfo(PathName.FullPath);
DirectoryInfo[] subDir = null;
try
{
subDir = curDir.GetDirectories();
}
catch
{
}
foreach (DirectoryInfo d in subDir)
{
TreeNode curNode = new TreeNode(d.Name);
PathName.Nodes.Add(curNode);
getSubNode(curNode, false);
}
}
}
private void treeView1_AfterExpand(object sender, System.Windows.Forms.TreeViewEventArgs e)
{
try
{
foreach (TreeNode tn in e.Node.Nodes)
{
if (!tn.IsExpanded)
{
getSubNode(tn, true);
}
}
}
catch { ;}
} private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
listView1.Items.Clear();
DirectoryInfo selDir = new DirectoryInfo(e.Node.FullPath);
DirectoryInfo[] listDir = null;
FileInfo[] listFile = null;
try
{
listDir = selDir.GetDirectories();
listFile = selDir.GetFiles();
}
catch { }
foreach (DirectoryInfo d in listDir)
{
listView1.Items.Add(d.Name, 6);
}
foreach (FileInfo d in listFile)
{
listView1.Items.Add(d.Name);
}
}
}
}
错误信息是 "未将对象引用设置到对象的实例。 "
============>类似这种错误一般都是说你创建的对象是null,但是你在后面又用了UserControl的方法,属性等。
楼主,你就给出这么一个cs文件,别人是找不到错误的。应该把关键的代码贴出来。
getSubNode(TreeNode PathName, bool isEnd)
中的
foreach (DirectoryInfo d in subDir) d值为空