Làm th? nào đ? nhúng và tài nguyên truy c?p b?ng cách s? d?ng Visual Basic.NET ho?c Visual Basic 2005

D?ch tiêu đ? D?ch tiêu đ?
ID c?a bài: 319291 - Xem s?n ph?m mà bài này áp d?ng vào.
Bung t?t c? | Thu g?n t?t c?

? Trang này

TÓM T?T

Bài t?ng bư?c này mô t? cách s? d?ng Microsoft Visual Basic .NET ho?c Microsoft Visual Basic 2005 đ? 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 tài nguyên T?i th?i gian ch?y.

T?ng quan

Các.NET Framework có th? gói g?n như m?t ph?n c?a m?t biên so?n các t?p tin gan y Cynulliad. 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 đang hoàn toàn riêng bi?t t? .resources và .resx có liên quan đ?n các t?p tin 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 d?ch, các ngư?i dùng không th? vô t?nh xóa ho?c misplace đư?c quan tr?ng đ?i v?i các t?p tin c?a b?n ?ng d?ng, 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 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 nhúng tài nguyên.

Cu?c bi?u t?nh-by-step

Đ? thêm tài nguyên nhúng vào d? án c?a b?n, b?n ph?i đ?u tiên 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.

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ư nhúng tài nguyên, h?y làm theo các bư?c sau:
  1. T?o m?t d? án ?ng d?ng m?i cho đi?u này cu?c bi?u t?nh. 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 các 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 vào 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 các h?nh ?nh này và sau đó đóng t?p tin.
  5. Nh?p chu?t ph?i vào t?p văn b?n ho?c bitmap, và sau đó 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 đây t?p tin đ? 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 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 là MyNamespace, các ngu?n l?c đư?c đ?t tên MyNamespace.MyTextFile.txt và MyNamespace.MyImage.bmp.

Lưu ? Tên t?p ngu?n l?c đư?c 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 làm 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 cu?c g?i phương pháp đ? 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 các Microsoft trung gian ngôn ng? Disassembler (ILDASM) đ? xem Manifest d? li?u, mà danh sách các ngu?n tài nguyên bao g?m.

Truy nh?p tài nguyên

Đ? truy c?p vào các ngu?n l?c mà b?n đ? nhúng trong bi?u hi?n c?a H?i đ?ng c?a b?n, nh?p kh?u các System.io và các System.Reflection không gian tên, như sau:
   Imports System.IO
   Imports 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 mà là nhúng vào trong h?i đ?ng c?a b?n.

Khi b?n tuyên b? sau đây trong các tuyên b? chung khu v?c, các ngu?n l?c t? h?i đ?ng đư?c đ?c khi các h?nh th?c đư?c n?p:
   Dim _imageStream As Stream
   Dim _textStreamReader As StreamReader
   Dim _assembly As [Assembly]
				
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 biên t?p viên thi?t k?.

Đ? đ?c các tài nguyên t? h?i đ?ng đó là 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 đó. Đ? làm s? d?ng này, 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 đ? c?a h? 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 ex As Exception
      MessageBox.Show("Resource wasn't found!", "Error")
   End Try
				
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 trư?ng h?p 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.

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ó ngh?a là đ?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 m?t h?p văn b?n.

Đ? hi?n th? các nhúng tài nguyên, 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 sau đây m? trong s? ki?n này:
       Try
          PictureBox1.Image = New Bitmap(_imageStream)
       Catch ex As Exception
          MessageBox.Show("Image Couldn't be created !")
       End Try
    					
    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 su?i ngu?n l?c đ? đư?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 Then
             TextBox1.Text = _textStreamReader.ReadLine()
          End If
       Catch ex As Exception
          MessageBox.Show("Error reading stream!")
       End Try
    					
    M? này s? xác đ?nh li?u k? t? đư?c đ?c v?n c?n t?n t?i trong các d?ng. N?u nhân v?t đư?c t?m th?y, m?t d?ng đ?c văn b?n h?p.
  7. Nh?n F5 đ? ch?y các ?ng d?ng.

Đ?y đ? m?

   Imports System.IO
   Imports System.Reflection

   Public Class Form1
      Inherits System.Windows.Forms.Form

   #Region " Windows Form Designer generated code "

      Public Sub New()
         MyBase.New()

         'This call is required by the Windows Form Designer.
         InitializeComponent()
 
         'Add any initialization after the InitializeComponent() call.
      End Sub

      'Form overrides dispose to clean up the component list.
      Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
         If disposing Then
            If Not (components Is Nothing) Then
               components.Dispose()
            End If
         End If
         MyBase.Dispose(disposing)
      End Sub

      'Required by the Windows Form Designer.
      Private components As System.ComponentModel.IContainer
 
      'NOTE: The following procedure is required by the Windows Form Designer.
      'It can be modified using the Windows Form Designer.  
      'Do not modify it using the code editor.
      Friend WithEvents Button1 As System.Windows.Forms.Button
      Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
      Friend WithEvents Button2 As System.Windows.Forms.Button
      Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
      <System.Diagnostics.DebuggerStepThrough()> Private Sub  InitializeComponent()
         Me.Button1 = New System.Windows.Forms.Button()
         Me.PictureBox1 = New System.Windows.Forms.PictureBox()
         Me.Button2 = New System.Windows.Forms.Button()
         Me.TextBox1 = New System.Windows.Forms.TextBox()
         Me.SuspendLayout()
         '
         'Button1
         '
         Me.Button1.Location = New System.Drawing.Point(16, 196)
         Me.Button1.Name = "Button1"
         Me.Button1.TabIndex = 0
         Me.Button1.Text = "Show Image"
         '
         'PictureBox1
         '
         Me.PictureBox1.Location = New System.Drawing.Point(8, 8)
         Me.PictureBox1.Name = "PictureBox1"
         Me.PictureBox1.Size = New System.Drawing.Size(280, 184)
         Me.PictureBox1.TabIndex = 1
         Me.PictureBox1.TabStop = False
         '
         'Button2
         '
         Me.Button2.Location = New System.Drawing.Point(16, 232)
         Me.Button2.Name = "Button2"
         Me.Button2.TabIndex = 2
         Me.Button2.Text = "Get Text"
         '
         'TextBox1
         '
         Me.TextBox1.Location = New System.Drawing.Point(100, 232)
         Me.TextBox1.Name = "TextBox1"
         Me.TextBox1.Size = New System.Drawing.Size(176, 20)
         Me.TextBox1.TabIndex = 3
         Me.TextBox1.Text = "TextBox1"
         '
         'Form1
         '
         Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
         Me.ClientSize = New System.Drawing.Size(292, 266)
         Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.TextBox1, Me.Button2, Me.PictureBox1, Me.Button1})
         Me.Name = "Form1"
         Me.Text = "Form1"
         Me.ResumeLayout(False)

      End Sub

   #End Region

      Dim _imageStream As Stream
      Dim _textStreamReader As StreamReader
      Dim _assembly As [Assembly]

      Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
         Try
            _assembly = [Assembly].GetExecutingAssembly()
            _imageStream = _assembly.GetManifestResourceStream("MyNamespace.MyImage.bmp")
            _textStreamReader = New StreamReader(_assembly.GetManifestResourceStream("MyNamespace.MyTextFile.txt"))
         Catch ex As Exception
            MessageBox.Show("Resource wasn't found!", "Error")
         End Try
      End Sub

      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
         Try
            PictureBox1.Image = New Bitmap(_imageStream)
         Catch ex As Exception
            MessageBox.Show("Image Couldn't be created !")
         End Try
      End Sub

      Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
         Try
            If _textStreamReader.Peek() <> -1 Then
               TextBox1.Text = _textStreamReader.ReadLine()
            End If
         Catch ex As Exception
            MessageBox.Show("Error reading stream!")
         End Try
      End Sub
   End Class
				
Lưu ? M? nên đư?c thay đ?i vào năm 2005 Visual Basic. N?u b?n t?o m?t h?nh th?c m?i đư?c đ?t tên Form1 vào năm 2005 Visual Basic, m?t t?p tin Form1.vb đư?c t?o ra cho m? c?a b?n và m?t t?p tin Form1.Designer.vb đư?c t?o ra có ch?a m?t ph?n t? đ?ng t?o ra. Các h?nh th?c Windows nhà thi?t k? s? d?ng các t? khóa m?t ph?n đ? phân chia th?c hi?n Form1 thành hai t?p tin riêng bi?t. Đi?u này ngăn c?n các nhà thi?t k? phát ra m? đư?c xen k? v?i m? c?a b?n.

Đ? bi?t thêm chi ti?t v? c?i ti?n m?i ngôn ng? Visual Basic 2005, ghé thăm Web site sau c?a Microsoft Developer Network (MSDN):
http://msdn2.Microsoft.com/en-US/Library/ms379584 (vs.80) .aspx

Đ? bi?t thêm chi ti?t v? các l?p h?c ph?n và các nhà thi?t k? các h?nh th?c Windows, h?y truy c?p MSDN Web site sau:
http://msdn2.Microsoft.com/en-US/Library/ms171843.aspx

Gi?i đáp th?c m?c

B?i v? ngu?n tài nguyên tên ch?, xác minh r?ng b?n là b?ng cách 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 tài nguyên.

THAM KH?O

Đ? bi?t thêm chi ti?t, xem các nhà phát tri?n Microsoft sau đây Các trang Web m?ng (MSDN):
Không gian tên System.Reflection
http://msdn2.Microsoft.com/en-US/Library/System.Reflection (vs.71) .aspx

H?i l?p
http://msdn2.Microsoft.com/en-US/Library/System.Reflection.Assembly (vs.71) .aspx

Phương pháp Assembly.GetManifestResourceStream
http://msdn2.Microsoft.com/en-US/Library/System.Reflection.Assembly.getmanifestresourcestream (vs.71) .aspx

Thu?c tính

ID c?a bài: 319291 - L?n xem xét sau cùng: 27 Tháng Tám 2011 - Xem xét l?i: 2.0
Áp d?ng
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic 2005
T? khóa: 
kbvs2005swept kbvs2005applies kbhowtomaster kbmt KB319291 KbMtvi
Máy d?ch
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:319291

Cung cấp Phản hồi

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com