嵌入和使用资源文件,以下是全部源代码:

using System;
 using System.Drawing;
 using System.Collections;
 using System.ComponentModel;
 using System.Windows.Forms;
 using System.Data;
 using System.Reflection;
 using System.IO;
 using System.Diagnostics;namespace ResourceDemo
 {
     /// <summary>
     /// Summary description for Form1.
     /// </summary>
     public class Form1 : System.Windows.Forms.Form
     {        
         ArrayList pics;
         private System.Windows.Forms.GroupBox groupBox1;
         private System.Windows.Forms.PictureBox pBox;
         private System.Windows.Forms.Button btnDisplay;
         private System.Windows.Forms.TextBox txtInfo;
         /// <summary>
         /// Required designer variable.
         /// </summary>
         private System.ComponentModel.Container components = null;        public Form1()
         {
             //
             // Required for Windows Form Designer support
             //
             InitializeComponent();            // Instantiate our ArrayList
             pics = new ArrayList();
         }        /// <summary>
         /// Clean up any resources being used.
         /// </summary>
         protected override void Dispose( bool disposing )
         {
             if( disposing )
             {
                 if (components != null) 
                 {
                     components.Dispose();
                 }
             }
             base.Dispose( disposing );
         }        #region Windows Form Designer generated code
         /// <summary>
         /// Required method for Designer support - do not modify
         /// the contents of this method with the code editor.
         /// </summary>
         private void InitializeComponent()
         {
             this.pBox = new System.Windows.Forms.PictureBox();
             this.groupBox1 = new System.Windows.Forms.GroupBox();
             this.btnDisplay = new System.Windows.Forms.Button();
             this.txtInfo = new System.Windows.Forms.TextBox();
             this.groupBox1.SuspendLayout();
             this.SuspendLayout();
             // 
             // pBox
             // 
             this.pBox.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
             this.pBox.Location = new System.Drawing.Point(8, 8);
              = "pBox";
             this.pBox.Size = new System.Drawing.Size(264, 272);
             this.pBox.TabIndex = 0;
             this.pBox.TabStop = false;
             this.pBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             // 
             // groupBox1
             // 
             this.groupBox1.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                                     this.txtInfo,
                                                                                     this.btnDisplay});
             this.groupBox1.Location = new System.Drawing.Point(288, 8);
              = "groupBox1";
             this.groupBox1.Size = new System.Drawing.Size(192, 264);
             this.groupBox1.TabIndex = 1;
             this.groupBox1.TabStop = false;
             // 
             // btnDisplay
             // 
             this.btnDisplay.Location = new System.Drawing.Point(48, 24);
              = "btnDisplay";
             this.btnDisplay.Size = new System.Drawing.Size(96, 23);
             this.btnDisplay.TabIndex = 0;
             this.btnDisplay.Text = "Display Picture";
             this.btnDisplay.Click += new System.EventHandler(this.button1_Click);
             // 
             // txtInfo
             // 
             this.txtInfo.Location = new System.Drawing.Point(8, 56);
             this.txtInfo.Multiline = true;
              = "txtInfo";
             this.txtInfo.ReadOnly = true;
             this.txtInfo.Size = new System.Drawing.Size(176, 200);
             this.txtInfo.TabIndex = 2;
             this.txtInfo.Text = "txtInfo";
             // 
             // Form1
             // 
             this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
             this.ClientSize = new System.Drawing.Size(496, 293);
             this.Controls.AddRange(new System.Windows.Forms.Control[] {
                                                                           this.groupBox1,
                                                                           this.pBox});
              = "Form1";
             this.Text = "Form1";
             this.Load += new System.EventHandler(this.Form1_Load);
             this.groupBox1.ResumeLayout(false);
             this.ResumeLayout(false);        }
         #endregion        /// <summary>
         /// The main entry point for the application.
         /// </summary>
         [STAThread]
         static void Main() 
         {
             Application.Run(new Form1());
         }        private void button1_Click(object sender, System.EventArgs e)
         {
             // go to a random picture in our arraylist and
             // display it
             Random generator = new Random();
             Bitmap bmp = pics[ generator.Next(pics.Count) ] as Bitmap;
             if(!(null==bmp))
             {
                 pBox.Image = bmp;
             }
             bmp = null;
             generator = null;
         }        private void Form1_Load(object sender, System.EventArgs e)
         {            
             Stream imgStream = null;
             Bitmap bmp = null;                        // get a reference to the current assembly
             Assembly a = Assembly.GetExecutingAssembly();
         
             // get a list of resource names from the manifest
             string [] resNames = a.GetManifestResourceNames();            // populate the textbox with information about our resources
             // also look for images and put them in our arraylist
             txtInfo.Clear();
             
             txtInfo.Text += String.Format("Found {0} resources\r\n", resNames.Length);
             txtInfo.Text += "----------\r\n";
             foreach(string s in resNames)
             {
                 txtInfo.Text += s + "\r\n";
                 if(s.EndsWith(".bmp"))
                 {
                     // attach to stream to the resource in the manifest
                     imgStream = a.GetManifestResourceStream(s);
                     if( !(null==imgStream) )
                     {                    
                         // create a new bitmap from this stream and 
                         // add it to the arraylist
                         bmp = Bitmap.FromStream( imgStream ) as Bitmap;
                         if( !(null==bmp) )
                         {
                             pics.Add( bmp );
                         }
                         bmp = null;
                         imgStream.Close();
                         imgStream = null;
                     }
                 }
             }            
             txtInfo.Text += "----------\r\n";
             txtInfo.Text += String.Format("Found {0} Bitmaps\r\n",
                 pics.Count);                        
         }
     }
 }