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.";
            }
        }