사용자 지정 컨트롤의 다른 속성에서 디자이너에 설정된 속성 값 가져 오기

SergeyAndSmart

사용자 지정 컨트롤을 만들고 리소스를 가리키는 새 속성을 추가했습니다.
사용자 지정 컨트롤의 다른 속성에서이 속성의 양식 디자이너에 설정된 값을 어떻게 가져올 수 있습니까? 읽으려고 할 때 반환되는 값은 null입니다.

여기에 이미지 설명 입력

Custom Control 및 언급 된 속성과 관련된 내 코드 :

class ResourceLabel : Label
{
    private string resourceKey;
    
    [Category("Appearance")]
    [Browsable(true)]
    [Description("Sets the resource key for localization")]
    public string ResourceKey
    {
        get { return resourceKey; }
        set {
            if (resourceKey != value) {
                resourceKey = value;
                Invalidate();
            }
        }
    }

    [Browsable(true)]
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
    [EditorBrowsable(EditorBrowsableState.Always)]
    [Bindable(true)]
    public override string Text
    {
        if (base.Text != value) {
            Console.WriteLine($"Test: {ResourceKey}");

            if (ResourceKey != null) {
                var locale = CultureInfo.GetCultureInfo(Properties.Settings.Default.Language);
                var textFromResource = Resources.ResourceManager.GetString(ResourceKey, locale);
                base.Text = textFromResource;
            } 
            else {
                base.Text = value;
            }
        }
    }
}

이 문자열 Console.WriteLine($"Test: {ResourceKey}");null.

지미

문제에 대한 설명과 사용자 지정 컨트롤 Description속성에 적용된 특성을 감안할 때 ResourceKey응용 프로그램을 지역화하여 결과적으로 Localizable부모 Form 속성을 true.

이로 인해 Form 초기화의 일부 세부 정보가 변경됩니다.
Form.Designer.cs 파일을 살펴보면 몇 가지 새로운 부분이 추가되었음을 알 수 있습니다
.
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(YourForm));

이제 새로운 동료가 있습니다. 각 컨트롤의 초기화 섹션에 resources.ApplyResources(this.controlName, "controlName");추가되었습니다.

맞춤 라벨은 다음과 같이 표시되어야합니다.

resources.ApplyResources(this.resourceLabel1, "resourceLabel1");

에서 파생 된 많은 표준 속성 Control은 지역화 할 수 있습니다 ( [Localizable(true)]속성 으로 장식 됨 ). 텍스트 속성은이 중 물론이다 . 이러한 등록 정보의 값은 이제 다른 지역화에 사용되는 리소스 파일에 저장됩니다. 따라서 이러한 속성은 더 이상 Designer.cs 파일에 설정되지 않으며 다른 속성보다 먼저 초기화됩니다.

귀하의 ResourceKey특성은 다음과 같이 정의되어 있지 Localizable그것이 Designer.cs 파일에 추가하고 지역화 특성 후 초기화, 그래서.

► 간단한 수정은 ResourceKey속성을로 정의하는 Localizable것입니다 Text. 따라서 속성과 함께 지역화되지 않은 속성보다 먼저 초기화 됩니다.

[Localizable(true), Browsable(true)]
[Category("Appearance"), Description("Sets the resource key for localization")]
public string ResourceKey {
    get { return resourceKey; }
    set {
        if (resourceKey != value) {
            resourceKey = value;
            Invalidate();
        }
    }
}

이는 약간의 주요 변경 사항 이므로 다음을 수행해야합니다.

1 - 추가 Localizable받는 사람 속성을 ResourceKey속성
2 - 제거 ResourceLabel 폼 디자이너에서 컨트롤을
3 - 컴파일 솔루션
4 - 사용자 정의 추가 ResourceLabel그것이 다시
설정 속성 패널에서 필요한 컨트롤의 속성 - 5
6 - 응용 프로그램을 실행 또는 컴파일 프로젝트

Form의 Designer.cs 파일을 확인하고 ResourceKey속성이 사라 졌는지 확인합니다 resources.ApplyResource(). 이제 해당 값이 .

► 해당 속성을 지역화 가능하게 만들고 싶지 않으면 나중에 Control의 초기화가 완료 될 때 해당 값을 읽어야합니다 . OnHandleCreated예를 들어 메서드를 재정의합니다 . 컨트롤의 핸들은 런타임에 몇 가지 경우에 다시 만들 수 있습니다 (컨트롤이 핸들을 다시 만드는 데 필요한 주요 속성 설정).

참고 :
속성의 초기화 시퀀스에 의존해서는 안됩니다. 속성이 다른 속성보다 먼저 초기화된다는 보장은 없습니다. 컨트롤의 동작을 디자인 할 때 이것을 고려하십시오.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PHP에서 사용자 정의 속성 값 가져 오기

분류에서Dev

사용자 지정 속성 내에서 사용할 속성 값 가져 오기

분류에서Dev

C # 설정 / 다른 스레드에서 컨트롤 속성 가져 오기

분류에서Dev

지시문의 격리 된 컨트롤러에서 속성 값 가져 오기

분류에서Dev

c # winform : 사용자 지정 컨트롤에서 디자이너의 기본 속성 재정의

분류에서Dev

사용자 지정 컨트롤의 다른 속성에 속성 바인딩

분류에서Dev

Angularjs 사용자 지정 지시문에서 속성 값 가져 오기

분류에서Dev

Laravel에서 많은 사용자 정의 속성 가져 오기

분류에서Dev

사용자 정의 컨트롤에서 속성을 바인딩하거나 가져 오는 방법

분류에서Dev

한 컨트롤러 메서드에서 설정된 모델 속성의 속성을 다른 컨트롤러 메서드에서 사용할 수 없습니다.

분류에서Dev

다른 사용자 정의 컨트롤에서 값을 가져 오는 Request.Form

분류에서Dev

PUN 2 사용자 지정 속성 가져 오기 및 설정

분류에서Dev

사용자 정의 속성 값을 가져 오는 XPath 쿼리

분류에서Dev

사용자 지정 번들 내의 컨트롤러에서 구성 매개 변수 가져 오기

분류에서Dev

선택 값을 가져온 다음 사용자 정의 HTML 속성에 추가

분류에서Dev

사용자 정의 유효성 검사기가 Struts2의 유효성 검사기 속성에 매개 변수 값을 설정하지 않습니다.

분류에서Dev

사용자 지정 컨트롤의 종속성 속성이 예기치 않게 메모리 / 값을 공유합니다.

분류에서Dev

JS-다른 페이지에서 사용할 클릭 된 a-tag의 데이터 속성 가져 오기

분류에서Dev

추상 클래스에 정의 된 속성 값 가져 오기

분류에서Dev

select2에서 ajax를 사용할 때 사용자 정의 속성 값을 가져올 수 없습니다.

분류에서Dev

사용자 지정 유효성 검사기에서 유효성 검사 컨텍스트의 기본 유형에서 값 가져 오기

분류에서Dev

컨트롤의 클래스 정의에서 사용자 지정 컨트롤이 추가 된 장면의 크기를 가져옵니다.

분류에서Dev

단축 코드 속성에서 사용자 지정 분류법 가져 오기

분류에서Dev

사용자 지정 개체 배열에서 속성 배열 가져 오기

분류에서Dev

Python LDAP 쿼리에서 사용자 지정 속성 가져 오기

분류에서Dev

사용자 정의 컨트롤에서 ObservableCollection 종속성 속성 바인딩

분류에서Dev

C # 사용자 지정 속성 그리드에서 탭 순서의 다음 컨트롤로 이동

분류에서Dev

값이있는 지정된 속성이있는 xml에서 값을 추출한 다음 다른 속성의 값을 가져옵니다.

분류에서Dev

미리 정의 된 가시성, 컨트롤 이름, 기본값으로 Orbeon 사용자 지정 컨트롤 XBL을 만드는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    PHP에서 사용자 정의 속성 값 가져 오기

  2. 2

    사용자 지정 속성 내에서 사용할 속성 값 가져 오기

  3. 3

    C # 설정 / 다른 스레드에서 컨트롤 속성 가져 오기

  4. 4

    지시문의 격리 된 컨트롤러에서 속성 값 가져 오기

  5. 5

    c # winform : 사용자 지정 컨트롤에서 디자이너의 기본 속성 재정의

  6. 6

    사용자 지정 컨트롤의 다른 속성에 속성 바인딩

  7. 7

    Angularjs 사용자 지정 지시문에서 속성 값 가져 오기

  8. 8

    Laravel에서 많은 사용자 정의 속성 가져 오기

  9. 9

    사용자 정의 컨트롤에서 속성을 바인딩하거나 가져 오는 방법

  10. 10

    한 컨트롤러 메서드에서 설정된 모델 속성의 속성을 다른 컨트롤러 메서드에서 사용할 수 없습니다.

  11. 11

    다른 사용자 정의 컨트롤에서 값을 가져 오는 Request.Form

  12. 12

    PUN 2 사용자 지정 속성 가져 오기 및 설정

  13. 13

    사용자 정의 속성 값을 가져 오는 XPath 쿼리

  14. 14

    사용자 지정 번들 내의 컨트롤러에서 구성 매개 변수 가져 오기

  15. 15

    선택 값을 가져온 다음 사용자 정의 HTML 속성에 추가

  16. 16

    사용자 정의 유효성 검사기가 Struts2의 유효성 검사기 속성에 매개 변수 값을 설정하지 않습니다.

  17. 17

    사용자 지정 컨트롤의 종속성 속성이 예기치 않게 메모리 / 값을 공유합니다.

  18. 18

    JS-다른 페이지에서 사용할 클릭 된 a-tag의 데이터 속성 가져 오기

  19. 19

    추상 클래스에 정의 된 속성 값 가져 오기

  20. 20

    select2에서 ajax를 사용할 때 사용자 정의 속성 값을 가져올 수 없습니다.

  21. 21

    사용자 지정 유효성 검사기에서 유효성 검사 컨텍스트의 기본 유형에서 값 가져 오기

  22. 22

    컨트롤의 클래스 정의에서 사용자 지정 컨트롤이 추가 된 장면의 크기를 가져옵니다.

  23. 23

    단축 코드 속성에서 사용자 지정 분류법 가져 오기

  24. 24

    사용자 지정 개체 배열에서 속성 배열 가져 오기

  25. 25

    Python LDAP 쿼리에서 사용자 지정 속성 가져 오기

  26. 26

    사용자 정의 컨트롤에서 ObservableCollection 종속성 속성 바인딩

  27. 27

    C # 사용자 지정 속성 그리드에서 탭 순서의 다음 컨트롤로 이동

  28. 28

    값이있는 지정된 속성이있는 xml에서 값을 추출한 다음 다른 속성의 값을 가져옵니다.

  29. 29

    미리 정의 된 가시성, 컨트롤 이름, 기본값으로 Orbeon 사용자 지정 컨트롤 XBL을 만드는 방법은 무엇입니까?

뜨겁다태그

보관