سؤال

ما هي أفضل طريقة لتنفيذ خيار الاختيار المتعدد في Windows Forms؟أريد فرض تحديد واحد من القائمة، بدءًا من القيمة الافتراضية.

يبدو أن ComboBox سيكون خيارًا جيدًا، ولكن هل هناك طريقة لتحديد قيمة افتراضية غير فارغة؟
يمكنني فقط ضبطه في الكود عند نقطة التهيئة المناسبة، لكني أشعر وكأنني أفتقد شيئًا ما.

هل كانت مفيدة؟

المحلول

إذا كنت تريد إجابة واحدة فقط من المجموعة، فسيكون عنصر تحكم RadioButton هو الأفضل لك أو يمكنك استخدام ComboBox إذا كان لديك الكثير من الخيارات.لتعيين قيمة افتراضية، ما عليك سوى إضافة العنصر إلى مجموعة ComboBox وتعيين SelectedIndex أو SelectedItem لهذا العنصر.

اعتمادًا على عدد الخيارات التي تنظر إليها، يمكنك استخدام ListBox مع تعيين خاصية SelectionMode على MultiSimple، إذا كانت متعددة الاختيارات أو يمكنك استخدام عنصر تحكم CheckBox.

نصائح أخرى

يجب أن تكون قادرًا على تعيين الخاصية ComboBox.SelectedIndex بالقيمة الافتراضية التي تريدها فقط.

http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox.selectedindex.aspx

استخدم ال ComboBox.SelectedItem أو الفهرس المحدد الخاصية بعد إدراج العناصر لتحديد العنصر الافتراضي.

يمكنك أيضًا التفكير في استخدام زر الراديو التحكم لفرض تحديد خيار واحد.

يمكنك استخدام ComboBox مع DropDownStyle تم تعيين الخاصية على DropDownList وSelectedIndex على 0 (أو أيًا كان العنصر الافتراضي).سيؤدي هذا إلى فرض وجود عنصر من القائمة المحددة دائمًا.إذا نسيت القيام بذلك، فيمكن للمستخدم كتابة شيء آخر في جزء مربع التحرير - وهو أمر سيئ :)

إذا كنت تعطي المستخدم قائمة صغيرة من الاختيارات، فالتزم بأزرار الاختيار.ومع ذلك، إذا كنت تريد استخدام مربع التحرير والسرد للقوائم الديناميكية أو الطويلة.اضبط النمط على DropDownList.

private sub populateList( items as List(of UserChoices))
   dim choices as UserChoices
   dim defaultChoice as UserChoices 

   for each choice in items
      cboList.items.add(choice)
      '-- you could do user specific check or base it on some other 
      '---- setting to find the default choice here
      if choice.state = _user.State or choice.state = _settings.defaultState then 
          defaultChoice = choice
      end if 
   next 
   '-- you chould select the first one
   if cboList.items.count > 0 then
      cboList.SelectedItem = cboList.item(0)
   end if 

   '-- continuation of hte default choice
   cboList.SelectedItem = defaultChoice

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