前言:
今天,没有话可说,直接上代码。
题目描述:
效果展示:
代码:
From1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Reflection;
namespace AssemblyView
{
public partial class Form1 : Form
{
private Dictionary<String, Assembly> assemblyMap;
public Form1()
{
InitializeComponent();
Assembly[] assemblies = System.AppDomain.CurrentDomain.GetAssemblies();
assemblyMap = new Dictionary<string, Assembly>();
for (int i = 0; i < assemblies.Length; i++)
{
Assembly assembly = assemblies[i];
String name = assembly.GetName().ToString();
String simpleName = name.Substring(0, name.IndexOf(','));
treeView2.Nodes.Add(simpleName, simpleName);
assemblyMap.Add(simpleName, assembly);
}
treeView1.ImageList = imageList1;
}
private void button2_Click(object sender, EventArgs e)
{
//clear treeView1
treeView1.Nodes.Clear();
if (String.IsNullOrEmpty(textBox1.Text))
{
if (treeView2.SelectedNode == null)
{
treeView2.SelectedNode = treeView2.Nodes[0];//default selected the index '0'
}
String key = treeView2.SelectedNode.Text;
Assembly assembly = assemblyMap[key];
ParseAssemblyAndPaint(assembly);//paint nodes to the view
}
else
{
String path = textBox1.Text;
Assembly assembly = Assembly.LoadFile(path);//load .exe or .dll file
ParseAssemblyAndPaint(assembly);//paint nodes to the view
}
}
/// <summary>
/// draw the assembly to the view
/// </summary>
/// <param name="assembly"></param>
private void ParseAsse