Visual C# kullanarak kaynakları ekleme ve kaynaklara erişme

ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.

Makalenin İngilizcesi aşağıdaki gibidir: 319292
Bu makalenin Microsoft Visual Basic .NET sürümü için bkz: 319291.

Bu makalede, aşağıdaki Microsoft .NET Framework sınıf kitaplığı ad alanlarına başvurur:
  • System.Reflection
  • System.IO

BU GÖREVDE

Özet
Bu adım adım makalede, Visual C# derleme bir parçası olarak kaynakları katıştırın ve sonra çalışma zamanında kaynaklara erişmek için nasıl kullanılacağını açıklar.

back to the top

Genel bakış

.NET Framework, dosyaları derlenmiş bir bütünleştirilmiş kodun kod parçaları olarak sarmalayabilir. Bu dosyalar gömülü kaynaklar olarak bilinir. Bu kaynaklar, derleme ile ilişkili olan .resources ve .resx dosyalarından tamamen farklıdır. Bu kaynaklara çalışma zamanında System.Reflection ad alanının Assembly sınıfı aracılığıyla erişebilir.

Bildirim kaynakları katıştırma önemli bir avantajı dosyalar, derlenmiş bütünleştirilmiş kod parçası olduğundan, kullanıcının yanlışlıkla silemez veya programın yürütülmesine engel olabilir, bazı durumlarda, uygulamanız için önemli olan dosyaları misplace emin olur. Bu yaklaşımın bir sınırlama değişiklikleri bu dosyaya derleme program yeniden derlemeden kaydedemezsiniz emin olur. Bu nedenle, yalnızca katıştırılmış bir kaynak olarak uygulamanızın ömrü sırasında değişmez dosyaları içerir.

back to the top

Adım adım bir gösterim

Katıştırılmış kaynakları projenize eklemek için dosyaları, projenizin bir parçası olarak eklemeniz gerekir. Dosyaları projenize ekledikten sonra erişebilir ve System.Reflection ad alanı aracılığıyla kaynakları görüntüler.

back to the top

Katıştırılmış kaynak ekleme

Bir metin dosyası ve görüntü dosyası katıştırılmış kaynak olarak projenize eklemek için şu adımları izleyin:
  1. Bu gösteri için yeni bir Windows uygulaması projesi oluşturun. Bu formu, çalışma sırasında yürütülen bütünleştirilmiş kod erişilebilir kaynakları görüntülemek için kullanılır.
  2. Proje adına sağ tıklayın, Ekle' yi tıklatın ve sonra da Add New Item' ı tıklatın.
  3. New Item iletişim kutusunda Metin dosyası menüsünden seçin ve dosyayı MyTextFile.txt olarak adlandırın. Tümleşik geliştirme ortamı (IDE) dosyası açıldığında, bazı metin eklemek ve dosyayı kapatın.
  4. 1 ve 2 projenize, ancak Metin dosyası yeni öğe türünü seçmek yerine bir bitmap görüntüsünü eklemek için Bit eşlem dosyasıseçin ve sonra MyImage.bmpiçin dosya adını değiştirin. IDE içinde yeni resim açıldığında, bir şey üzerinde resim çizmek ve dosyayı kapatın.
  5. Metin dosyası veya bit eşlem'i sağ tıklatın ve sonra Özellikler' i seçin.
  6. Özellikler iletişim kutusunda, Yapı eylemi özelliği bulun. Varsayılan olarak, bu özelliği İçerikiçin ayarlanır. Özelliği tıklatın ve Katıştırılmış kaynakYapı eylemi özelliği değiştirin.
  7. Diğer dosya için 4 ve 5 numaralı adımları yineleyin.
Projeyi, bir dahaki derleyici derlemeniz için bu dosyaları ekler. Projede dahil olduğunda derleyici projenin kök ad kaynak adına ekler. Örneğin, projenizin kök ad MyNamespace ise, kaynakların MyNamespace.MyTextFile.txt ve MyNamespace.MyImage.bmp olarak adlandırılır.

Not: kaynak dosya adlarının büyük/küçük harfe duyarlıdır. Kaynaklara erişirken, aynı yazımı ve dosya adı büyük ve küçük harflerini kullanmanız gerekir. Tam yazım kullanmayın ve hiçbir şeyve sistem dosya adının ManifestResourceStream erişmek için yöntem çağrısı durumu döndürürse, bir özel durum oluşturmaz.

Not: kaynak adlarını doğrulamak isterseniz, Microsoft Ara dili paket Çözücü (ILDASM) dahil kaynakları listeler liste verileri görüntülemek için kullanabilirsiniz.

back to the top

Kaynaklara erişim

Derlemenizin bildirimine katıştırılmış kaynaklara erişmek için System.IO dosyasını ve System.Reflection ad alanlarını aşağıdaki gibi alın:
   using System.IO;   using System.Reflection;				
System.Reflection ad, derlemede katıştırılır kaynaklara erişmek için yöntemler sağlar derleme sınıfı tanımlar ve bir akış tanımını System.IO ad sağlar.

Genel bildirim alanında aşağıdaki bildirdiğinizde, derleme kaynaklardan form yüklendiğinde okuyun:
   Assembly _assembly;   Stream _imageStream;   StreamReader _textStreamReader;				
Not: Kod Düzenleyicisi'nde formun Load olayı erişmek için form Tasarım Düzenleyicisi'ni çift tıklatın.

Kaynağın geçerli kodu yürütmesini derlemesinden okumak için o bütünleştirilmiş kod örneğini edinmeniz gerekir. Bunu yapmak için bütünleştirilmiş kodun GetExecutingAssembly yöntemi aşağıdaki gibi kullanın:
   _assembly = Assembly.GetExecutingAssembly();				
Bilgi akışı için kaynak okuma GetManifestResourceStreamyöntem çağrısı yapılır. Bu yönteme geçirilen parametre erişilecek kaynak adıdır. Formun Load olayı yürütülür gibi iki kaynak sonra kendilerine karşılık gelen akış için okunur.
   _imageStream = _assembly.GetManifestResourceStream("MyNameSpace.MyImage.bmp");   _textStreamReader = new StreamReader(_assembly.GetManifestResourceStream("MyNameSpace.MyTextFile.txt"));				
Formun Load olayı kodu aşağıdakine benzer:
   try   {      _assembly = Assembly.GetExecutingAssembly();      _imageStream = _assembly.GetManifestResourceStream("MyNamespace.MyImage.bmp");      _textStreamReader = new StreamReader(_assembly.GetManifestResourceStream("MyNamespace.MyTextFile.txt"));   }   catch   {      MessageBox.Show("Error accessing resources!");   }				
.NET içinde yapılandırılmış hata işleme olarak bilinen Try-Catch deyimi derleme sınıfın örneğini kaynaklarına erişen sırasında oluşabilecek tüm hataları yakalamak için kullanılır.

back to the top

Görüntü kaynakları

Bu örnek iki düğme katıştırılmış kaynakları görüntülemek için kullanır. İlk düğmeyi tıklattığınızda, derlemeden okuma kaynak dayalı bir bitmap görüntüsü oluşturulur ve form PictureBox denetimde görüntülenen. İkinci düğmenin metin kaynağı okur ve metin kutusu içindeki metni görüntüler.

Katıştırılmış kaynakları görüntülemek için şu adımları izleyin:
  1. PictureBox denetim forma ekleyin.
  2. Forma yeni bir Button denetimi ekleyin ve sonra Görüntüyü GösterText özelliğini değiştirin.
  3. Kendi tıklatın olay kodu görüntüleyicide açmak için düğmeyi çift tıklatın ve sonra bu olay, aşağıdaki kodu yapıştırın:
       try   {      pictureBox1.Image = new Bitmap(_imageStream);			       }   catch    {      MessageBox.Show("Error creating image!");   }					
    Bu kod, form Yükleme olayında okundu kaynak akışı dayalı bir bit eşlem yeni bir örneğini oluşturur.

  4. Forma bir TextBox denetimi ekleyin.
  5. Forma bir Button denetimi ekleyin ve sonra Metni almakiçin Text özelliğini değiştirin.
  6. Tasarım düğme için Click_Event açmak için Düzenleyicisi'nde düğmesini çift tıklatın ve ardından olayına aşağıdaki kodu yapıştırın:
       try   {      if(_textStreamReader.Peek() != -1)      {         textBox1.Text = _textStreamReader.ReadLine();      }   }   catch   {      MessageBox.Show("Error writing text!");   }					
    Bu kod, okunacak karakterler hala akışında mevcut belirler. Karakter bulunursa, metin kutusuna bir çizgi okunur.

  7. Uygulamayı çalıştırmak için F5 tuşuna basın.
back to the top

Tam kodu

   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!");            }		         }      }   }				
Not Kod, Visual Studio 2005 veya Visual Studio 2008'de değiştirilmelidir. Bir Windows Forms projesi oluşturduğunuzda, Visual C# bir form projesine varsayılan olarak ekler. Bu formu Form1 adlı. Formu temsil eden iki dosyayı Form1.cs ve Form1.designer.cs olarak adlandırılır. Form1.cs dosyasýnýn, kod yazacaksınız. Burada Windows Form Tasarımcısı denetimleri ekleyerek gerçekleştirilen tüm eylemleri uygulayan kodunu Yazar Designer.cs dosyasıdır. Visual C# 2005 veya Visual Studio 2008'de Windows Form Tasarımcısı hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:back to the top

Sorun giderme

Kaynak adları büyük küçük harf duyarlı olduğundan, doğru yazım ve kaynaklarının erişilebilir durumda kullandığınızdan emin olun. Kaynakların doğru yazdığınızı doğrulamak için bildirim verileri okumak için ILDASM kullanabilirsiniz.

back to the top
Referanslar
Daha fazla bilgi için aşağıdaki Microsoft Developer Network (MSDN) Web sitelerine bakın:back to the top

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Властивості

Ідентифікатор статті: 319292 – останній перегляд: 07/03/2016 21:13:00 – виправлення: 5.0

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

  • kbsweptvs2008 kbhowtomaster kbmt KB319292 KbMttr
Зворотний зв’язок