2010-08-04 2 views
3

우리는 얼마 동안 개발 중이던 winform 앱을 가지고 있습니다. 브랜드 이미지를 생성하는 몇 가지 이미지와 컨트롤 색상이 있습니다. 우리는 동일한 제품을 원하지만 다른 브랜딩을 원하는 두 번째 고객이 있습니다. 그것은 리소스 파일처럼 보인다culture를 변경하지 않고 C# winform 응용 프로그램의 리소스 파일을 어떻게 변경합니까?

this.BackgroundImage = global::MyNameSpace.Properties.Resources.background; 

는 단순히 문화를 변경하고 별도의 리소스 파일을 가질 수 있기 때문에, 이동하는 방법은 다음과 같습니다

그래서 우리는 같은 파일 designer.cs 제어 코드의 라인을 가지고 다른 이미지와 함께.

하지만 문화 (나는 날짜, 통화 등의 표시를 변경하고 싶지 않음)를 변경하고 싶지 않고 냄새가납니다.

문화권을 변경하지 않고 런타임 또는 컴파일 타임에 수동으로 리소스 파일을 변경할 수 있습니까?

이 결과를 얻는 더 좋은 방법이 있습니까?

리소스 파일을 사용하여 컨트롤 색상을 설정하는 방법 (예 : 모든 배경을 검은 색에서 빨간색으로 변경)은 어떻게 할 수 있습니까?

+0

입니다. –

답변

1

리소스가있는 별도의 파일에서 리소스를 읽을 수는 있지만 전역화된 위성 어셈블리 메커니즘에 의존하지는 않습니다. 기본 어셈블리를 폴백으로 기본 리소스를 컴파일 할 수도 있습니다.

당신은 .resources에게에서 파일, 예를 들면, 의 .resx 파일을 만든 다음 그것을 읽을 ResourceManager를 사용하는 Resgen.exe을 사용할 수 있습니다

: 당신이 고려할 수

//note that resourceFilename does NOT include the ".resources" extension 
var rm = ResourceManager.CreateFileBasedResourceManager(resourceFilename 
                 ,resourceDir 
                 ,null); 
this.BackgroundImage = (Image) rm.GetObject("background"); 
+0

마크, 유망한 것 같습니다. 별도의 어셈블리에서 자원을 만들고 읽는 것을 저를 도와 줄 수있는 리소스를 가르쳐 주시겠습니까? – Handleman

+0

어셈블리에 링크하지 않고 리소스 파일 만 필요하기 때문에 대답이 변경되었습니다. 사용 지침 + 코드가 포함되어 있습니다. –

+0

도움과 코드를 보내 주셔서 감사합니다. 이 솔루션은 기존 설계자 파일의 코드를 this.BackgroundImage = global :: MyNameSpace.Properties.Resources.background;에서 변경해야 할 것처럼 보입니다. ~ this.BackgroundImage = (Image) rm.GetObject ("background"); 이고 "rm"이 해당 파일의 범위에 있어야합니다. 컨트롤을 디자이너에로드 할 때 생성 및 오류가 발생하지 않습니까? – Handleman

0

하나의 옵션이를 만드는 것입니다 사용자 지정 문화권을 만들 수 있습니다. 예를 들어

ClientA-fr-FR 
ClientB-fr-FR 

문화권을 만들 수 있습니다. 각각에 대한 리소스를 만들면 다음을 설정할 수 있습니다. 스레드 문화는 approriately. 여기

는 링크 "How to: Create Custom Cultures" 당신은 별도의 질문으로 그 마지막 비트를 게시 할 수 있습니다

관련 문제