Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Làm thế nào để nhúng và tài nguyên truy cập bằng cách sử dụng Visual C#

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:319292
Đối với một Microsoft Visual Basic.NET Phiên bản của bài viết này, xem 319291.

Bài viết này đề cập đến Microsoft sau.Không gian tên thư viện lớp của NET Framework:
  • System.Reflection
  • System.io

TRONG TÁC VỤ NÀY

TÓM TẮT
Bài viết từng bước này mô tả cách sử dụng Visual C# để nhúng tài nguyên như là một phần của hội đồng, và sau đó truy cập vào các nguồn lực và thời gian chạy.

back to the top

Tổng quan

Các.NET Framework có thể gói gọn tập tin là một phần của một hội đồng giúp đã biên dịch. Những tập tin này được gọi là tài nguyên nhúng. Các nguồn tài nguyên hoàn toàn tách biệt với các tập tin .resources và .resx được liên kết với hội đồng. Bạn có thể truy cập các nguồn tài nguyên tại thời gian chạy qua các Lắp ráp lớp học của các System.Reflection không gian tên.

Một lợi thế lớn của nhúng nguồn lực để Manifest là bởi vì các tập tin là một phần của bạn lắp ráp biên soạn, người dùng không thể vô tình xóa hoặc misplace tập tin rất quan trọng để ứng dụng của bạn, mà trong một số trường hợp có thể ngăn chặn việc thi hành chương trình của bạn. Một trong những hạn chế của phương pháp này là bạn không thể lưu bất kỳ thay đổi vào tập tin này để hội đồng mà không có việc chương trình. Vì chỉ bao gồm các tập tin sẽ không thay đổi trong suốt cuộc đời của các ứng dụng của bạn như là một nguồn nhúng.

back to the top

Cuộc biểu tình-by-step

Để thêm tài nguyên nhúng vào dự án của bạn, trước tiên bạn phải thêm các tập tin như là một phần của dự án của bạn. Sau khi bạn đã thêm các tập tin vào dự án của bạn, bạn có thể truy cập và hiển thị các nguồn lực thông qua các System.Reflection không gian tên.

back to the top

Thêm nguồn lực nhúng

Để thêm một tập tin văn bản và tệp hình ảnh cho dự án của bạn như là nguồn lực nhúng, hãy làm theo các bước sau:
  1. Tạo một dự án ứng dụng mới cho cuộc biểu tình này. Mẫu này được dùng để hiển thị các nguồn lực được truy cập từ hội đồng executing trong thời gian chạy.
  2. Nhấp chuột phải vào tên dự án của bạn, hãy nhấp vào Thêm, sau đó bấm Thêm mục mới.
  3. Trong các Khoản mục mới hộp thoại, chọn Tệp văn bản từ trình đơn, và tên tệp MyTextFile.txt. Khi tập tin mở ra trong môi trường phát triển tích hợp (IDE), thêm một số văn bản, và sau đó đóng tệp.
  4. Lặp lại bước 1 và 2 thêm một ảnh bitmap để dự án của bạn, nhưng thay vì chọn Tệp văn bản như loại khoản mục mới, chọn Tệp bitmap, và sau đó thay đổi tên tập tin để MyImage.bmp. Khi hình ảnh mới được mở ra trong IDE, vẽ một cái gì đó trên hình ảnh, và sau đó đóng tệp.
  5. Nhấp chuột phải vào tệp văn bản hoặc bitmap, và chọn Thuộc tính.
  6. Trong các Thuộc tính hộp thoại hộp, xác định vị trí các Xây dựng hành động bất động sản. Theo mặc định, tài sản này được thiết lập để Nội dung. Nhấp vào các tài sản và thay đổi các Xây dựng hành động bất động sản để Nhúng tài nguyên.
  7. Lặp lại bước 4 và 5 cho các tập tin khác.
Sau khi bạn xây dựng dự án, trình biên dịch cho biết thêm những tập tin này để hội đồng của bạn. Trình biên dịch cho biết thêm không gian tên gốc của dự án với tên của các nguồn tài nguyên khi nó được bao gồm trong dự án. Ví dụ, nếu không gian tên gốc của dự án của bạn MyNamespace, các nguồn lực được đặt tên MyNamespace.MyTextFile.txt và MyNamespace.MyImage.bmp.

LƯU Ý: Các tài nguyên tập tin tên là chữ. Khi bạn truy cập các nguồn lực, bạn phải sử dụng chính tả chính xác và trường hợp của tên tệp. Nếu bạn không sử dụng chính tả chính xác và trường hợp của tên tập tin, các phương pháp gọi để truy cập các ManifestResourceStream trả về Không có gì, và hệ thống không tăng một ngoại lệ.

LƯU Ý: Nếu bạn muốn xác minh tên tài nguyên, bạn có thể sử dụng Disassembler ngôn ngữ trung gian Microsoft (ILDASM) để xem các dữ liệu biểu hiện, trong đó liệt kê các nguồn tài nguyên bao gồm.

back to the top

Truy nhập tài nguyên

Để truy cập vào các nguồn lực mà bạn đã nhúng trong thế vận hội của bạn, nhập khẩu các System.io và các System.Reflection không gian tên, như sau:
   using System.IO;   using System.Reflection;				
Các System.io không gian tên cung cấp định nghĩa của một dòng và các System.Reflection không gian tên xác định các Lắp ráp lớp cung cấp phương pháp để truy cập vào các nguồn lực được nhúng trong hội đồng của bạn.

Khi bạn tuyên bố sau đây trong khu vực tuyên bố chung, các nguồn lực từ hội đồng được đọc khi biểu mẫu được nạp:
   Assembly _assembly;   Stream _imageStream;   StreamReader _textStreamReader;				
LƯU Ý: Để truy cập các Tải sự kiện cho các hình thức trong trình biên tập mã, nhấp đúp vào hình thức trong trình biên tập thiết kế.

Để đọc các tài nguyên từ hội đồng đó thực hiện mã hiện thời, bạn phải có được một thể hiện của hội đồng đó. Để thực hiện việc này, sử dụng các GetExecutingAssembly phương pháp của hội đồng, như sau:
   _assembly = Assembly.GetExecutingAssembly();				
Đọc các thông tin từ các nguồn lực đến một dòng được thực hiện với một phương pháp gọi đến GetManifestResourceStream. Các tham số được thông qua với phương pháp này là tên của các nguồn tài nguyên đó là để được truy cập. Hai nguồn tài nguyên sau đó đọc cho các dòng tương ứng như các Tải sự kiện của các hình thức được thi hành.
   _imageStream = _assembly.GetManifestResourceStream("MyNameSpace.MyImage.bmp");   _textStreamReader = new StreamReader(_assembly.GetManifestResourceStream("MyNameSpace.MyTextFile.txt"));				
Mã số trong các Tải sự kiện cho các hình thức tương tự như dưới đây:
   try   {      _assembly = Assembly.GetExecutingAssembly();      _imageStream = _assembly.GetManifestResourceStream("MyNamespace.MyImage.bmp");      _textStreamReader = new StreamReader(_assembly.GetManifestResourceStream("MyNamespace.MyTextFile.txt"));   }   catch   {      MessageBox.Show("Error accessing resources!");   }				
Các Cố gắng nắm bắt tuyên bố, được gọi là quản lý cấu trúc lỗi trong.NET, được sử dụng để nắm bắt bất kỳ lỗi nào có thể xảy ra trong khi thể hiện của các Lắp ráp lớp học chủ yếu truy cấp các nguồn tài nguyên.

back to the top

Hiển thị tài nguyên

Ví dụ này sử dụng hai nút để hiển thị các nguồn lực nhúng. Khi bạn bấm nút đầu tiên, một ảnh bitmap mà dựa trên các nguồn tài nguyên đọc từ hội đồng được tạo ra và hiển thị trong các PictureBox kiểm soát của các hình thức. Nút thứ hai lần đọc từ một nguồn tài nguyên văn bản và hiển thị văn bản trong hộp văn bản.

Để hiển thị các nguồn lực nhúng, hãy làm theo các bước sau:
  1. Thêm một PictureBox kiểm soát mẫu.
  2. Thêm một mới Nút kiểm soát mẫu, và sau đó thay đổi của nó Văn bản bất động sản để Hiển thị hình ảnh.
  3. Bấm đúp nút để mở của nó Nhấp vào sự kiện người xem mã, và sau đó dán đoạn mã sau vào sự kiện này:
       try   {      pictureBox1.Image = new Bitmap(_imageStream);			       }   catch    {      MessageBox.Show("Error creating image!");   }					
    Mã này tạo ra một trường hợp mới của một ảnh bitmap mà dựa trên các dòng tài nguyên đã được đọc trong các Tải sự kiện của các hình thức.

  4. Thêm một TextBox kiểm soát mẫu.
  5. Thêm khác Nút kiểm soát mẫu, và sau đó thay đổi của nó Văn bản bất động sản để Nhận được văn bản.
  6. Bấm đúp chuột vào nút trong trình biên tập thiết kế để mở các Click_Event Đối với các nút, và sau đó dán sau đây mã trong sự kiện này:
       try   {      if(_textStreamReader.Peek() != -1)      {         textBox1.Text = _textStreamReader.ReadLine();      }   }   catch   {      MessageBox.Show("Error writing text!");   }					
    Mã này sẽ xác định liệu ký tự được đọc vẫn còn tồn tại trong dòng. Nếu nhân vật được tìm thấy, một dòng được đọc vào hộp văn bản.

  7. Nhấn F5 để chạy các ứng dụng.
back to the top

Đầy đủ mã

   using System;   using System.Drawing;   using System.Collections;   using System.ComponentModel;   using System.Windows.Forms;   using System.Data;   using System.IO;   using System.Reflection;   namespace MyNamespace   {      /// <summary>      /// Summary description for Form1.      /// </summary>      public class Form1 : System.Windows.Forms.Form      {         private System.Windows.Forms.PictureBox pictureBox1;         private System.Windows.Forms.TextBox textBox1;         private System.Windows.Forms.Button button1;         private System.Windows.Forms.Button button2;         /// <summary>         /// Required designer variable.         /// </summary>         private System.ComponentModel.Container components = null;         public Form1()         {            //             // Required for Windows Form Designer support.            //             InitializeComponent();            //             // TODO: Add any constructor code after InitializeComponent call.            //          }         /// <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.pictureBox1 = new System.Windows.Forms.PictureBox();            this.textBox1 = new System.Windows.Forms.TextBox();            this.button1 = new System.Windows.Forms.Button();            this.button2 = new System.Windows.Forms.Button();            this.SuspendLayout();            //             // pictureBox1            //             this.pictureBox1.Location = new System.Drawing.Point(4, 8);            this.pictureBox1.Name = "pictureBox1";            this.pictureBox1.Size = new System.Drawing.Size(284, 192);            this.pictureBox1.TabIndex = 0;            this.pictureBox1.TabStop = false;            //             // textBox1            //             this.textBox1.Location = new System.Drawing.Point(92, 236);            this.textBox1.Name = "textBox1";            this.textBox1.Size = new System.Drawing.Size(192, 20);            this.textBox1.TabIndex = 1;            this.textBox1.Text = "textBox1";            //             // button1            //             this.button1.Location = new System.Drawing.Point(8, 208);            this.button1.Name = "button1";            this.button1.TabIndex = 2;            this.button1.Text = "Show Image";            this.button1.Click += new System.EventHandler(this.button1_Click);            //             // button2            //             this.button2.Location = new System.Drawing.Point(8, 236);            this.button2.Name = "button2";            this.button2.TabIndex = 3;            this.button2.Text = "Get Text";            this.button2.Click += new System.EventHandler(this.button2_Click);            //             // Form1            //             this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);            this.ClientSize = new System.Drawing.Size(292, 266);            this.Controls.AddRange(new System.Windows.Forms.Control[]{                                                                     this.button2,                                                                     this.button1,                                                                     this.textBox1,                                                                     this.pictureBox1});            this.Name = "Form1";            this.Text = "Form1";            this.Load += new System.EventHandler(this.Form1_Load);            this.ResumeLayout(false);         }      #endregion         Assembly _assembly;         Stream _imageStream;         StreamReader _textStreamReader;         /// <summary>         /// The main entry point for the application.         /// </summary>         [STAThread]         static void Main()          {            Application.Run(new Form1());         }         private void Form1_Load(object sender, System.EventArgs e)         {            try            {               _assembly = Assembly.GetExecutingAssembly();               _imageStream = _assembly.GetManifestResourceStream("MyNamespace.MyImage.bmp");              _textStreamReader = new StreamReader(_assembly.GetManifestResourceStream("MyNamespace.MyTextFile.txt"));            }            catch            {               MessageBox.Show("Error accessing resources!");            }		         }         private void button1_Click(object sender, System.EventArgs e)         {            try            {               pictureBox1.Image = new Bitmap(_imageStream);            }            catch             {               MessageBox.Show("Error creating image!");            }         }         private void button2_Click(object sender, System.EventArgs e)         {            try            {               if(_textStreamReader.Peek() != -1)               {                  textBox1.Text = _textStreamReader.ReadLine();               }            }            catch            {               MessageBox.Show("Error writing text!");            }		         }      }   }				
Chú ý Mã nên được thay đổi trong Visual Studio 2005 hoặc trong Visual Studio 2008. Khi bạn tạo một dự án Windows Forms, Visual C# thêm một hình thức cho các dự án theo mặc định. Mẫu đơn này được đặt tên Form1. Hai tập tin mà đại diện cho các hình thức được đặt tên là Form1.cs và Form1.designer.cs. Bạn viết mã của bạn trong Form1.cs. Các tập tin Designer.cs là nơi các nhà thiết kế các hình thức Windows viết mã thực hiện tất cả các hành động mà bạn thực hiện bằng cách thêm điều khiển.Để biết thêm chi tiết về Windows Forms Designer Visual C# 2005 hoặc trong Visual Studio 2008, ghé thăm Web site sau của Microsoft:back to the top

Khắc phục sự cố

Bởi vì nguồn tài nguyên tên chữ, kiểm chứng rằng bạn đang sử dụng đúng chính tả và trường hợp của các nguồn lực được truy cập. Bạn có thể sử dụng ILDASM để đọc dữ liệu hiển nhiên để xác minh chính tả chính xác của các nguồn tài nguyên.

back to the top
THAM KHẢO
Để biết thêm chi tiết, xem trang Web Microsoft Developer Network (MSDN) sau đây:back to the top

Cảnh báo: Bài viết này đã được dịch tự động

Thuộc tính

ID Bài viết: 319292 - Xem lại Lần cuối: 08/27/2011 22:28:00 - Bản sửa đổi: 2.0

Microsoft Visual C# .NET 2002 Standard Edition, Microsoft Visual C# 2005 Express Edition, Microsoft Visual C# 2008 Express Edition

  • kbsweptvs2008 kbhowtomaster kbmt KB319292 KbMtvi
Phản hồi