수동으로 구현할 기존의 더 큰 Winforms 앱에서 이전에 자동으로 생성 된 지역화를 수정해야하기 때문에 작은 테스트 응용 프로그램에서 ComponentResourceManager를 사용하여 놀고있었습니다. 이렇게하면 수동으로 삽입 된 모든 문자열 누군가가 양식 디자이너를 열 때마다 리소스 파일이 누출되지 않습니다.resources.ApplyResources (...) not working - 생각인가?
이 테스트를 위해 양식에 단추 컨트롤이 있습니다. 리소스 파일에 저장된 속성을 사용하여 버튼 속성을 설정하려고합니다. 속성을 찾고 직접 설정하면 정상적으로 작동합니다.
ResourceManager resourceManager = new ResourceManager("LocalizationTest1.buttonProps", typeof(Form1).Assembly);
button1.Text = resourceManager.GetString("button1.Text");
button1.Location = (Point)(resourceManager.GetObject("button1.Location"));
그러나 다음과 같이 ApplyResources를 사용하려고하면 작동하지 않습니다.
ComponentResourceManager componentResourceManager = new ComponentResourceManager(typeof(Form1));
componentResourceManager.ApplyResources(this.button1, "button1");
는 또한 자원 이름 button1.Text 및 button1.Location 모두 자원 디자이너에서 옆에 the resource name 'button1...' is not a valid identifier
을 가지고 관련이있을 수 있습니다.
나는 지금까지 온라인과 관련된 모든 것을 찾을 수 없었으므로 도움이 될만한 생각은 대단히 감사하겠습니다.
나를 위해 [it works] (https://stackoverflow.com/a/46017814/3110834). 결과를보기 위해 자원을 적용하기 전에 문화를 바꾸 었습니까? 양식이 [현지화 가능] (https://stackoverflow.com/a/32990088/3110834)인지 확인하십시오. –
CurrentUICulture를 변경하면 적절한 resx 파일로 언어가 변경되기 때문에 양식을 지역화 할 수 있습니다. 단, 속성을 직접 주소 지정하는 경우에만 가능합니다. 즉, 'button1.Text = resourceManager.GetString ("button1.Text");'. ApplyResources를 사용하여 오브젝트를보다 광범위하게 처리하려고 시도하지 않음 – Justin
[예제] (https://stackoverflow.com/a/46017814/3110834)에서 공유 한 정확한 코드를 사용해 보셨습니까? –