1

Do You know how to open file from resources in Visual studio when I click on a button? Thanks.

Kev
  • 118,037
  • 53
  • 300
  • 385
DroidBellmer
  • 301
  • 2
  • 4
  • 5
  • 2
    When you click on a button in Visual Studio? Or when you click on button on keyboard? Or when you click on a button on page create by ASP.Net? Or button on WinForm? (Note that there are search engines that can save you time - "load from resources C#" is not rare search request. Advertisement: you can use http://www.bing.com to search). – Alexei Levenkov Sep 08 '12 at 18:24
  • Changing the meaning of a question isn't really acceptable. I've rolled this back to the original. Please don't do this again. Thanks. – Kev Sep 08 '12 at 23:30

2 Answers2

13

You could use the GetManifestResourceStream method:

var currentAssembly = Assembly.GetExecutingAssembly();
using (var stream = currentAssembly.GetManifestResourceStream("SomeNs.file.txt"))
using (var reader = new StreamReader(stream))
{
    // TODO: read the stream here
    string contents = reader.ReadToEnd();
}

In this example file.txt is embedded into the current assembly as resource. You will have to adjust the name of the resource you are trying to read. And don't use a StreamReader if the embedded resource is not a text file. You will have to read the stream directly if it is a binary file.

Darin Dimitrov
  • 1,023,142
  • 271
  • 3,287
  • 2,928
0

this can be used when your file is a local file

        string resName = "myfile.txt";
        var file = GetResourceStream(resName);
        string all = "";

        using (var reader = new StreamReader(file))
        {
            all = reader.ReadToEnd();
        }

where

     static UnmanagedMemoryStream GetResourceStream(string resName)
    {
        var assembly = Assembly.GetExecutingAssembly();
        var strResources = assembly.GetName().Name + ".g.resources";
        var rStream = assembly.GetManifestResourceStream(strResources);
        var resourceReader = new System.Resources.ResourceReader(rStream);
        var items = resourceReader.OfType<System.Collections.DictionaryEntry>();
        var stream = items.First(x => (x.Key as string) == resName.ToLower()).Value;
        return (UnmanagedMemoryStream)stream;
    }

enter image description here

Kev
  • 118,037
  • 53
  • 300
  • 385
S3ddi9
  • 2,121
  • 2
  • 20
  • 34