当前位置:首页 > 在.NET中嵌入和使用资源文件

在.NET中嵌入和使用资源文件

点击次数:1238  更新日期:2010-12-27
\n

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

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);
this.pBox.Name = “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);
this.groupBox1.Name = “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);
this.btnDisplay.Name = “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;
this.txtInfo.Name = “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});
this.Name = “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);
}
}
}


\n