2009-11-26 4 views
4

ToolStrip이있는 Form이 있습니다. 이 ToolStrip에는 ToolStripButton이 포함되어 있습니다. 이 버튼에 이미지를 지정하고 싶습니다.ToolStripButton : 프로그래밍 방식으로 이미지를 할당 할 때 잘못된 점

this.btnSaveFile.Image = Bitmap.FromFile("C:\\Work\\Icons\\png\\save.png"); 

지정된 경로에 save.png가있는 경우에만 작동합니다. 그렇지 않으면 FileNotFound 예외가 발생합니다. 내가 폼 디자이너를 통해 양식을 작성한 경우

은 Visual Studio에서이 같은 코드를 만들 것입니다 : 여기

this.toolStripButton9.Image = ((System.Drawing.Image) (resources.GetObject("toolStripButton9.Image"))); 

toolStripButton9.Image 실제 이름이 아닙니다. Visual Studio에서 내 파일 save.png을 가져 와서 toolStripButton9.Image로 변환합니다.

하지만 디자이너없이 프로그래밍 방식으로 양식을 만듭니다. 그리고 내 질문은 프로그래밍 방식으로 ToolStripBotton에 이미지를 지정하는 방법입니다.

프로젝트에 이미지를 추가하려했지만 많은 도움이되지 않았습니다. 내가 Visual Studio를 잡아 내 실행 파일에 임베드하여 특정 위치에이 파일이 필요 없도록하는 방법을 모르겠습니다.

은 MSDN에서, 난 단지 that 같은 솔루션을 참조하십시오

this.toolStripButton1.Image = Bitmap.FromFile("c:\\NewItem.bmp"); 

하지만 위에서 말했듯이 '작업을 나던. 간단한 해결책이 있지만 이해가 안되는 것을 알고 있습니다. 나에게 힌트를 주시겠습니까?

+0

나는 희망 추가로 도움이되는 추가 정보와 내 대답을 업데이트했습니다. – Webleeuw

+0

Webleeuw, 예, 작동합니다! 이 예제를 주셔서 대단히 감사합니다! – Racoon

답변

5

Visual Studio에서 솔루션 탐색기의 "Properties"폴더를 연 다음 Resources.resx 파일을 열고 자원으로 기존 이미지 파일을 추가하십시오. 그런 다음 자원 정적 클래스를 통해 프로그래밍 방식을 사용할 수 있습니다

Image x = Resources.MyResourceImage; 

코드의 전체 예를 들어 내가 제안 :

using System.Windows.Forms; 
using Testapplication.Properties; 

namespace Testapplication { 
    public class Class1 { 
     public Class1() { 
      Form MyForm = new Form(); 
      ToolStrip MyToolStrip = new ToolStrip(); 
      MyForm.Controls.Add(MyToolStrip); 

      ToolStripButton MyButton = new ToolStripButton(); 
      MyToolStrip.Items.Add(MyButton); 

      MyButton.Image = Resources.MyResourceImage; 

      MyForm.Show(); 
     } 
    } 
} 

이 YourApps '속성 네임 스페이스에 대한 사용을 추가하는 것을 잊지 마십시오. Resources.resx (.cs) 파일은 해당 네임 스페이스에 있으며 이미지와 같은 강력한 형식의 개체 참조를 제공하는 데 사용됩니다. 귀하의 경우, "MyResourceImage"를 "save"로 대체하십시오 (따옴표 제외).

ps. 포함 리소스에서

internal static System.Drawing.Bitmap MyResourceImage { 
    get { 
     object obj = ResourceManager.GetObject("MyResourceImage", resourceCulture); 
     return ((System.Drawing.Bitmap)(obj)); 
    } 
} 
+0

Webleeuw, 대답 해줘서 고마워. 미안하지만 작동하지 않는 것 같습니다. Properties-> Resources를 통해 png.file 저장을 추가했습니다. 이제는 내 프로젝트의 Resource 폴더에서 볼 수 있습니다. 그러나 나는 그것을 어떻게 참조 할 수 있는가? MyResourceImage 대신에 무엇을 넣을 수 있습니까? "파일 resource.Designer.cs는 다음 코드를 사용하여 자동으로 만들어졌습니다. object obj = ResourceManager.GetObject ("save ", resourceCulture); 그러나이 같은 구문을 사용하지 못했습니다. 어떤 아이디어? – Racoon

+0

intellisense가 공백을 채우게하면 "자원"을 입력하면 어떻게됩니까? 어떤 제안이 있습니까? – RvdK

+0

Webleeuw, 예, 작동합니다! 이 예제를 주셔서 대단히 감사합니다! – Racoon

0

그래서 당신은 설정을 의미 이미지 : 내 Resources.designer.cs 파일의 가장 중요한 부분에서의 눈? 이 방법보다 쉽게 ​​

string res = "MyAssembly.Resources.toolStripButton9.Image"; 
Stream s = this.GetType().Assembly.GetManifestResourceStream(res); 
Icon icon = Icon.FromStream(s); 

사용 Webleeuws 응답이 작동하는 경우, : P는

+0

감사합니다 :) 그것은 나를 위해 작동하지만 Racoon이 찾는 솔루션인지는 알 수 없습니다. – Webleeuw

+0

PoweRoy, 대답 해줘서 고마워. 미안, 이해가 안돼. Form Designer를 사용하지 않기 때문에 toolStripButton9.Image가 없습니다. 따라서이 코드를 사용하는 방법을 모르는 ... Webleeuws는 해결책에 가깝지만 ... 내 대답을 그의 대답을 참조하십시오. – Racoon

관련 문제