سؤال

في نماذج 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) قد يكون خيار أفضل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top