مجموعة مربعات النص الإكمال التلقائي
-
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;
}
}
}
نصائح أخرى
إذا فهمت لك بشكل صحيح ، فأنت تريد القيمة في مربع النص (والتي يمكن اقتراحها تلقائيًا) أن يكون لها قيمة مرتبطة. يمكنك القيام بذلك عن طريق إنشاء ملف Dictionary<string, string>
مع ال TextBox
النص على أنه المفتاح وما تسميه "المفتاح" كقيمة. كلما أردت تحديد موقع "المفتاح" لخصوص TextBox
القيمة ، يمكنك التحقق من القاموس لذلك.
بالطبع TextBox
قد لا تكون أفضل طريقة لتمثيل بياناتك إذا كان يجب أن يكون هناك مفتاح. إذا كان يجب أن يكون هناك مفتاح ، ComboBox
(مع DropDownStyle
ضبط ل ComboBoxStyle.DropDownList
) قد يكون خيار أفضل.