ПредишенСледващото

MyStrings.resources файл ще бъде създаден, които могат да бъдат включени в проекта.

Добавяне на ресурси в VS.NET

В някои отношения, най-простият вид ресурс е файл, сам по себе си, тъй като устройството за съхранение, с типа на файла, не играе роля. То може да бъде даден файл картина, като някои от кодирана информация, и така нататък ... Добавянето на съдържанието на ресурсите на файла е може би най-лесният начин да се добави ресурси, за да изпълним файл. Нека да видим как това може да бъде направено.

Да предположим, на твърдия диск вече е подготвен файл с име Bitmap1.bmp, съдържащ някакъв образ (името на файла и естеството на информацията в него може да бъде всичко). За да добавите Bitmap1.bmp съдържанието на даден файл в един изпълним файл като ресурс, се процедира, както следва:

В прозореца Solution Explorer, изберете елемент, съответстващ на разработения проект, а след това щракнете с десния бутон на мишката.

В резултат на изскачащи прозорци менюто, изберете елемента «Добави», а след това изберете елемента «Добавяне на съществуващ елемент» в следващия изскачащи прозорци меню.

В отворилия се диалогов прозорец изберете файла, да бъдат добавени към проекта.

След завършване на всички тези стъпки, файлът се появява в дървото на проекта (виж Фигура 1.)

В контекстното меню на добавената файл изберете «имоти», което, от своя страна, ще доведе до появата на «Имоти» прозорец, в който можете да регулирате свойствата на файла.

Изберете собственост «Build действие» стойност «Embedded Ресурс» (виж Фигура 2) .:

След тези стъпки, и съставяне на съдържанието на Bitmap1.bmp файл ще бъдат включени в ресурсите. По този начин всеки от ресурсите могат да бъдат включени (в разумни граници, разбира се) на размера на всеки файл. Ясно е, че в този случай не се предприемат действия по отношение на съдържанието на файла няма да бъде извършена под успя ресурс ще копирате съдържанието на файла.

Както вече споменахме, на част от средствата могат да бъдат добавени към формата на ресурси и .resources. За да направите това, се процедира, както следва:

В резултат на тези действия ще създаде Visual Studio XML-файл, част от съдържанието на които може да се види на фигура 4.

Този файл ще има .resx разширение, а когато проектът е съставен съдържанието му трансформирани в .resources и е включена в изпълнимия файл.

За съжаление, като се използва grid'a (вж. Фигура 3) Visual Studio .NET добавите .resx данни не са примитивни видове, като например картина, практически е невъзможно, може да се извършва само от ресурси сериализация на данни.

Това е особено необходимо да се каже за .resx файл, съдържащ данните на формите, създадени от Форма Designer'om. Те, разбира се, също се съхраняват ресурсите. Но! Тези файлове се генерират автоматично. Ето защо, по принцип, когато се добави към досиетата на никакви данни, когато компилирате проекта, тези данни ще бъдат загубени.

Използване на ресурси в приложението

Ясно е, че ресурсите са създадени с цел впоследствие да извлича данни от тях. Достъпът до ресурсите се осъществява с помощта на метод GetManifestResourceStream. Например, да се позове на вече добавени в Bitmap1.bmp ресурси, които можете да използвате следните оператори:

Очевидно е, че .resource формат е създаден с очакването, че данните ще бъдат прочетени от него точка по точка, с отделен ресурс в търсене на този формат ще бъде направено от името на този ресурс. За достъп до ресурсите, можете да използвате методите за ResourceManager клас. Неговите две основни методи, GetString и GetObject, предназначени да изтеглите от ресурсите на линии и обекти, съответно. По-долу е пример за използване на клас обект ResourceManager за натоварването на линията вече добавени към .resources:

Този метод се връща не просто набор от байтове и на инстанция на класа System.String. метод GetObject намери ресурс с посоченото име, създава нова инстанция на обекта и се зарежда (с помощта на BinaryFormatter'a) състояние на обекта. По този начин, можем да кажем, че методите за ResourceManager натоварени обекти от ресурсите на даден логически имена. Както бе споменато по-рано, на първо място, този механизъм е създаден, за да заредите състояние на компонентите и тяхното съдържание на автора, като например Windows Forms и ASP.NET. По подразбиране, дизайнери се опитват да издавам състоянието на компонентите в кода, но има и случаи, в които на сериализацията не е възможно в кода. Например, че е трудно (и неразумно) Сериализирането съдържанието на код изображения. В допълнение към дизайнера можеше напълно Сериализирането в код всички свойства на компонент, разработчика на компонент трябва да предприеме някакво действие (изпълняван TypeConverter, който превръща инстанция на специален клас описание инстанция - InstanceDescriptor). Ако няма такава, и поредица клас не е част от, дизайнерът се опитва да издавам инстанция на държавния BinaryFormatter'om. Ако успее, той ще запише тази държавна .resx файл, и кодът ще замени метода на повикване ResourceManager.GetObject. В този случай, ресурсът ще бъде дадено името на ImyaKomponenta.ImyaSvoystva на видове. Например, pictureBox1 компонент (като System.Windows.Forms.PictureBox) тенденция тип изображение System.Drawing.Image. Този тип не поддържа сериализация в кода, но това не е особено необходимо, тъй като основните му съдържание - това е картина. Затова дизайнерите Сериализирането обекти от този тип в ресурса (.resx-файлове). След съставянето .resx формат файлове се конвертират в .resources ресурси с имена, които съответстват на името на ProstranstvoImenPrinyatoePoUmolchaniyu.ImyaFormy.resources типа форма. В самото начало на метода InitializeComponent на съответната форма се прибавя към код, който инициализира случай на ResourceManager:

и кода на раздел компонент инициализация (в този случай pictureBox1) се добавя към кода за прехвърляне на обекти от един ресурс:

Подкрепете проекта - споделете линка, благодаря!