110,538
社区成员
发帖
与我相关
我的任务
分享
private void frmMain_Load(object sender, EventArgs e)
{
//我的文档
string document = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
DirectoryInfo diDocument = new DirectoryInfo(document);
TreeNode tnDocument = new TreeNode(diDocument.FullName);
GetDir(tnDocument);
//我的电脑
foreach (DriveInfo driver in DriveInfo.GetDrives())
{
if (driver.DriveType == DriveType.Fixed)
{
TreeNode tnDisk = new TreeNode(driver.Name);
tnDisk.ImageKey = "disk.png";
tnDisk.SelectedImageKey = "disk.png";
tvwTree.Nodes[1].Nodes.Add(tnDisk);
GetDir(tnDisk);
}
}
tvwTree.Nodes[1].Expand();
}
private void GetDir(TreeNode tn)
{
if (tn.Nodes.Count == 0)
{
DirectoryInfo directory = new DirectoryInfo(tn.FullPath);
}
}
private void frmMain_Load(object sender, EventArgs e)
{
try
{
// 你的代码段
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
}
具体的说,托管代码创建一个具体的FrmMain Window时 ,需要调用操作系统的本地代码,而本地代码反过来调用frmMain_Load。由于某些微软声称的特殊原因,frmMain_Load里的异常无法穿透本地代码,再回到托管代码中。最后的结果就是异常被吃掉了。
你有兴趣的话,可以搜索”OnLoad exception disappeared“,可能可以看到微软的DotNet团队和操作系统团队就此问题互相指责的故事。
[/quote]
原来还有这么一说,知道了,谢谢.private void frmMain_Load(object sender, EventArgs e)
{
try
{
// 你的代码段
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
}
具体的说,托管代码创建一个具体的FrmMain Window时 ,需要调用操作系统的本地代码,而本地代码反过来调用frmMain_Load。由于某些微软声称的特殊原因,frmMain_Load里的异常无法穿透本地代码,再回到托管代码中。最后的结果就是异常被吃掉了。
你有兴趣的话,可以搜索”OnLoad exception disappeared“,可能可以看到微软的DotNet团队和操作系统团队就此问题互相指责的故事。
//
// 摘要:
// 设置从根树节点到当前树节点的路径。
//
// 返回结果:
// 从根树节点到当前树节点的路径。
//
// 异常:
// System.InvalidOperationException:
// 此节点未包含在 System.Windows.Forms.TreeView 中。
[Browsable(false)]
public string FullPath { get; }
至于为什么发生异常,上面解释的很清楚了~
你的tnDocument不是TreeView的节点,而是孤零零的一个对象,当然发生异常咯