2009-05-18 4 views
1

내 .designer.cs 파일에서 상수 문자열을 참조하려면 어떻게합니까?C# designer.cs 코드에서 상수 문자열을 사용하는 방법은 무엇입니까?

정답은 내 .cs 파일에서 개인 문자열 변수를 만든 다음 designer.cs 파일을 편집하여 문자열을 하드 코딩하는 대신이 변수를 사용하는 것입니다. 그러나 디자이너가 오류를 던지기를 좋아하지 않습니다. 왜 이것이 작동하지 않는지 이해하지만 가장 좋은 대안이 무엇인지 잘 모르겠습니다.

각 UI 컨트롤에 텍스트가 단순히 자리 표시 자로 있어야합니까? 그렇다면 모든 텍스트 속성을 런타임에만 재정의해야합니까? 이렇게하면 디자이너의 모든 것을 볼 수있는 이점이 없어집니다.

나는 장래에 상황이 바뀔 때 가장 혼란을 일으키는 방법을 찾아 내려고 노력하고 있습니다. 감사.

답변

5

*.designer.* 파일은 Visual Studio에서 생성됩니다. Visual Studio는 종종 -이를 생성하고 변경 사항을 지울 수 있기 때문에 실제로 수정해야하는 경우가 아니면 직접 수정하지 않으려합니다.

정말로해야 할 일은 상수 문자열을 양식 디자이너가 사용할 수 있도록하려는 리소스로 생각하면 코드를 생성 할 때 해당 리소스가 사용됩니다.

Visual Studio에서 여러 가지 방법으로이를 수행 할 수 있습니다. 가장 쉬운 방법은 컨트롤에 대한 데이터 바인딩을 사용하는 것입니다. 데모하려면 레이블 컨트롤을 폼에 배치하고 컨트롤의 속성을 살펴보십시오.속성을 이름순으로 정렬하면 목록 상단에 괄호로 묶인 두 속성, ApplicationSettingsDataBindings이 있습니다. 아래로 당기면 레이블의 Text 속성에 바인딩 할 수있는 옵션이 모두 표시됩니다. 이들을 사용하여 앱의 설정 파일에 "상수 문자열"을 넣고 ApplicationSettings 속성 또는 데이터 소스를 통해 바인딩하고 DataBindings 속성을 통해 바인딩 할 수 있습니다. 그런 다음 양식 디자이너가 적절한 코드를 생성합니다.

+0

Joes이 맞습니다. 실제로 디자이너 파일을 수동으로 수정하면 안됩니다! – Enyra

4

달성하려는 목표는 분명하지 않지만 일반적으로 디자이너 .cs 파일에 문자열을 모두 하드 코딩하지 않으려면 문자열이로드 될 리소스 파일을 사용하십시오 시작시.

양식의 "localizable"속성을 "true"로 설정하면 모든 것이 자동으로 자원으로 끝나게됩니다. 다른 한편으로는 Windows Forms의 전문가와는 거리가 멀기 때문에 작업 할 때까지 소금을 집어 넣으십시오.

+1

롤 "전문가와는 거리가 먼" – inspite

+1

나는 WinForms에서 내가 초보자라고 말하지 않지만, 나는 현명한 정의에 의해 전문가가 아니다. –

1

어떤 문제를 해결하려고합니까? 현지화를 구현하려는 경우 .NET 및 위성 어셈블리와 함께 제공되는 현지화 기능을 살펴보십시오.

맞춤 설정을 해결하려는 경우 설정 편집기를 사용하여 .NET에서 사용할 수있는 맞춤 설정 옵션을 확인하십시오.

왜 상수 문자열을 사용해야합니까?

+1

버튼과 메뉴 항목이 많은 양식이 있습니다. 우리 제품의 버전에 따라 다른 버튼 세트를 활성화/비활성화해야합니다. 이것이 과거에 행해졌 던 방법은 문자열 (버튼 이름)의 목록을 유지하고 그것을 사용하여 특정 버튼이 활성화/비활성화되어야하는지 확인하는 것입니다. 상수 문자열은 .designer.cs 파일에 포함되어 작동하지만 디자이너는 사용할 수 없게 만듭니다. – TheSean

+0

문자열에 단추의 이름이 포함되어있는 경우 이러한 상수 문자열을 자리 표시 자로 사용하는 이유는 설명하지 않습니다. –

1

두 번째 방법이 최선의 방법입니다. 디자이너가 항상 변경 사항을 유지하려고한다고 가정 할 수 없기 때문에 종종 변경 사항이 적용됩니다. Page_Init 이벤트 방법으로 통제 변경을 원할 것입니다. 이렇게하면 변경 사항이 디자이너에 표시 될 수 있습니다.

http://msdn.microsoft.com/en-us/library/system.web.ui.control.init.aspx

당신이 당신의 실제 코드 숨김 클래스 제어하고 컨트롤이 원하는 방식으로 시작됩니다 당신은 당신이 변경하려는 일을 제어 할 수 있습니다 당신에게 상수를 유지하기 위해 얻을이 방법.

업데이트 : 미안하지만 이것이 WinForms라는 것을 알지 못했습니다. 컨트롤 초기화가 호출 된 직후에 생성자에 컨트롤을 등록하기 때문에 실제로는 WinForms에서 훨씬 쉽습니다.

+0

고마워,하지만 난 그냥 winforms를 사용하고 있습니다. 그래도 비슷한 이벤트 핸들러가 있어야합니다. 저는 디자이너에서 사용자 컨트롤을 렌더링하는 방법에 익숙하지 않지만 좀 더 자세히 설명하겠습니다. – TheSean

+0

컨트롤이 초기화 된 후 실제로 생성자에서 수행하려고합니다. –

관련 문제