자동 완성 텍스트 상자 수집
-
20-09-2019 - |
문제
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
) 더 나은 옵션 일 수 있습니다.