문제

Windows 양식에서 텍스트 상자는 간단한 문자열 목록을 제공하거나 강력한 유형의 문자열 목록 인 자동 완전성 수집 일 수있는 사용자 정의 소스를 제공하여 자동 완성 텍스트 상자로 만들 수 있습니다. 각 문자열에 키를 추가 할 수 있기를 원합니다. 제안이 선택 될 때마다 해당 키를 가져올 수 있습니다.

나는 그냥 공란을 그릴 수도 있습니다 .. 그러나 누구든지 제안이 있습니까? 미리 감사드립니다

도움이 되었습니까?

해결책

클래스 autocompleteStringCollection 클래스는 밀봉되지 않으므로 확실히 파생물을 파생시키고 키와 값의 두 매개 변수를 취하는 두 가지 매개 변수의 오버로드를 만들 수 있습니다.

그런 다음 사전에서 추적 할 수 있습니다. 문자열을 두 번 저장해야하지만 (기본 클래스의 컬렉션에서 한 번, 사전에서 한 번). 그런 다음 다음과 같은 조회 방법을 추가 할 수 있습니다.

class KeyedAutoCompleteStringCollection : AutoCompleteStringCollection {

    private readonly Dictionary<string,string> keyedValues =
        new Dictionary<string,string>(StringComparer.OrdinalIgnoreCase);

    public void Add(string value, string key) {
        base.Add(value);
        keyedValues.Add(value, key); // intentionally backwards
    }

    public string Lookup(string value) {
        string key;
        if (keyedValues.TryGetValue(value, out key)) {
            return key;
        }
        else {
            return null;
        }
    }

}

다른 팁

내가 당신을 올바르게 이해한다면, 당신은 텍스트 상자의 값 (자동 제안 될 수 있음)이 관련 값을 갖기를 원합니다. 당신은 a를 만들어서 그렇게 할 수 있습니다 Dictionary<string, string> 이랑 TextBox 텍스트를 키로 텍스트하고 '키'라고 부르는 것을 값으로 텍스트하십시오. 특정에 대한 '키'를 찾을 때마다 TextBox 값, 사전을 확인할 수 있습니다.

물론, a TextBox 키가 있어야하는 경우 데이터를 대표하는 가장 좋은 방법이 아닐 수 있습니다. 열쇠가 있어야하는 경우 ComboBox (와 함께 DropDownStyle 로 설정 ComboBoxStyle.DropDownList) 더 나은 옵션 일 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top