private void ShowInfo(Assembly asm) { tvResources.Nodes.Clear(); pbValue.Visible = false; tbValue.Visible = false; btnExport.Enabled = false; if (asm != null) { try { lblStatus.Text = "Loaded: " + asm.FullName; foreach (string resourceName in asm.GetManifestResourceNames()) { TreeNode root = new TreeNode(resourceName); root.ImageIndex = 1; root.SelectedImageIndex = 1; tvResources.Nodes.Add(root); using (Stream resourceStream = asm.GetManifestResourceStream(resourceName)) { try { IDictionaryEnumerator enu = new ResourceSet(resourceStream).GetEnumerator(); while (enu.MoveNext()) { TreeNode node = new TreeNode(enu.Key.ToString()); root.Nodes.Add(node); node.ImageIndex = 0; node.SelectedImageIndex = 0; if (enu.Value is Icon || enu.Value is Bitmap) { node.Tag = enu.Value; node.ImageIndex = 2; node.SelectedImageIndex = 2; } else if (enu.Value is String) { node.Tag = enu.Value; node.ImageIndex = 3; node.SelectedImageIndex = 3; } else if (enu.Value is ImageListStreamer) { ImageList il = new ImageList(); il.ImageStream = (ImageListStreamer)enu.Value; node.ImageIndex = 1; node.SelectedImageIndex = 1; for (int i = 0; i < il.Images.Count; i++) { TreeNode imgNode = new TreeNode(i.ToString()); imgNode.Tag = il.Images[i]; imgNode.ImageIndex = 2; imgNode.SelectedImageIndex = 2; node.Nodes.Add(imgNode); } } } } catch { try { //------------------------------------------------------ // Try treating stream as a single image. //------------------------------------------------------ root.Tag = new Bitmap(resourceStream); root.ImageIndex = 2; root.SelectedImageIndex = 2; } catch { try { //------------------------------------------------------ // Try treating stream as plain text. //------------------------------------------------------ using (TextReader tr = new StreamReader(resourceStream)) { root.Tag = tr.ReadToEnd(); root.ImageIndex = 0; root.SelectedImageIndex = 0; } } catch { lblStatus.Text = "Error reading resource file."; } } } } } } catch (Exception ex) { //------------------------------------------------------ // Exception likely thrown by GetManifestResourceNames(). //------------------------------------------------------ lblStatus.Text = ex.Message; } } else { lblStatus.Text = "No assembly loaded."; } }