.NET에서 리소스를 만들고 사용하는 방법


192

프로그램의 다양한 부분에서 쉽게 참조하고 사용할 수있는 리소스를 어떻게 만듭니 까?

내 특정 문제는 프로그램 상태에 따라 아이콘을 변경하려는 NotifyIcon이 있다는 것입니다. 일반적인 문제이지만 오랫동안 고투해온 문제입니다.

답변:


325

글쎄, StackOverflow (gee, 나는 이곳을 이미 좋아한다) 주위에서 다양한 지점을 둘러보고 함께 모은 후에, 대부분의 문제는 이미이 단계를지나 갔다. 그래도 내 문제에 대한 답을 해결했습니다.

리소스를 만드는 방법 :

제 경우에는 아이콘을 만들고 싶습니다. 리소스로 추가하려는 데이터 유형에 관계없이 유사한 프로세스입니다.

  • 리소스를 추가하려는 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오. 솔루션 탐색기에서이 작업을 수행하십시오. 목록에서 "속성"옵션을 선택하십시오.
  • "자원"탭을 클릭하십시오.
  • 막대 상단의 첫 번째 버튼을 사용하면 추가 할 리소스 유형을 선택할 수 있습니다. 문자열에서 시작해야합니다. 아이콘을 추가하고 싶습니다. 아이콘을 클릭하고 옵션 목록에서 "아이콘"을 선택하십시오.
  • 그런 다음 두 번째 버튼 인 "자원 추가"로 이동하십시오. 새 리소스를 추가하거나 이미 아이콘이 만들어져 있으면 추가 할 수도 있습니다. 선택한 옵션에 대한 프롬프트를 따르십시오.
  • 이 시점에서 새로 추가 된 리소스를 두 번 클릭하여 편집 할 수 있습니다. 리소스는 솔루션 탐색기에도 표시되며, 더블 클릭하면 효과가 있습니다.

자원을 사용하는 방법 :

좋습니다. 새 리소스가 생겨서 멋진 아이콘이 바뀌기를 원합니다. 어떻게해야합니까? 운 좋게도 C #은 이것을 매우 쉽게 만듭니다.

Properties.Resources모든 리소스에 액세스 할 수 있는 정적 클래스가 있으므로 내 코드는 다음과 같이 간단합니다.

paused = !paused;
if (paused)
    notifyIcon.Icon = Properties.Resources.RedIcon;
else
    notifyIcon.Icon = Properties.Resources.GreenIcon;

끝난! 끝마친! 방법을 알면 모든 것이 간단합니까?


이것에 감사합니다, 똑같은 것을 찾고있었습니다. .ico 파일을 실행 파일에 포함시켜 별도의 파일로 표시되지 않는 방법이 있습니까? 내 질문이 이해되기를 바랍니다. 안부
Amc_rtty 오전

1
@Andrei : 바로 그게 자원입니다. 추가되면 컴파일 된 exe의 일부로 포함됩니다.
Matthew Scharley

1
"... 대부분의 문제는 이미이 단계를 지나갔습니다."-너무 사실입니다. 함께 해 주셔서 감사합니다! 나는 그것이 간단하다는 것을 알았습니다 ... 결국.
roadsunknown

1
참고로, 리소스 파일은 컴파일 타임에 잠겨 있습니다. 따라서 런타임에 동적으로 변경하면 기존 값을 거의 변경하지 않습니다. 런타임시 값을 변경하려면 구성 파일을 사용하십시오. 누군가에게 도움이되는 경우.
Purusartha

1
VB.NET에서 리소스는 "My.Resources.GreenIcon"을 통해 액세스됩니다
andy

9

위의 내용은 Visual Studio 2010에서 예상 한대로 실제로 작동하지 않았습니다. Properties.Resources에 액세스 할 수는 없지만 권한 문제로 인해 액세스 할 수 없다고 말했습니다. 궁극적으로 리소스 속성의 지속성 설정을 변경 한 다음 Resources.Designer.cs 파일을 통해 액세스하는 방법을 찾았습니다. 여기에서 MyNamespace.Properties.Resources를 통해 아이콘에 액세스 할 수있는 자동 게터가 있습니다. .NameFromAddingTheResource. 그러면 바로 사용할 수있는 Icon 유형의 객체가 반환됩니다.


7

위의 방법이 효과적입니다.

또 다른 방법 (여기서는 웹이라고 가정)은 페이지를 만드는 것입니다. 페이지에 컨트롤을 추가하십시오. 그런 다음 디자인 모드에서 도구> 로컬 자원 생성으로 이동 하십시오 . 리소스 파일은 페이지의 모든 컨트롤이 리소스 파일에 매핑 된 솔루션에 자동으로 나타납니다.

다른 언어에 대한 리소스를 만들려면 파일 이름 끝에 4 자 언어를 확장명 앞에 추가하십시오 ( Account.aspx.en-US.resx, Account.aspx.es-ES.resx ... 등).

코드 숨김에서 특정 항목을 검색하려면이 메소드를 호출하면 GetLocalResourceObject([resource entry key/name])됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.