2016-04-19 3 views
1

Я использую эту строку для создания коллекции чисел для моего ComboBox.Установить минимальный номер в ComboBox

Main.ComboBox.Items.AddRange(Enumerable.Range(1, maxNum).Select(Function(s) s.ToString()).ToArray()) 

Мне было интересно, как я мог бы установить для него минимум? Например, 6-100, а не по умолчанию 1-100.

Update:

Я использую numberSetting со значением 0 в закладке Свойства проекта настройки.

numberSetting получает свою фактическую стоимость от:

My.Settings.numberSetting = CInt(ComboBox.Text) 

После numberSetting имеет свою ценность, я использую его с MAXNUM установить максимальное количество опций в ComboBox:

Dim maxNum = My.Settings.numberSetting 
    Dim winners = Enumerable.Range(1, maxNum).OrderBy(Function(r) rand.Next()).Take(5).ToArray() 

Это позволяет я получаю 100 флажков, если я выберу 100 как мой вариант из ComboBox. То, что я хочу сделать, - это установить минимальный вариант на 6, так что 1, 2, 3, 4 и 5 не являются параметрами в ComboBox.

РЕШИТЬ:

Private Sub Options_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    Dim maxNum = My.Settings.numberSetting2 
    NumberCombo.Items.AddRange(Enumerable.Range(6, maxNum - 5).Select(Function(s) s.ToString()).ToArray()) 
End Sub 

Где My.Settings.numberSetting2 имеет значение по умолчанию 100.

ответ

1

Да, вы можете. Однако обратите внимание, что аргументами являются start и кол-во (не max). Таким образом, вы должны настроить ComboBox инициализацию следующим образом:

Dim minNum As Integer = 6 
Dim maxNum As Integer = 100 
Main.ComboBox.Items.AddRange(Enumerable.Range(minNum, maxNum - minNum + 1).Select(Function(s) s.ToString()).ToArray()) 

Обратите внимание, что вы должны изменить Range(1, maxNum) к Range(minNum, maxNum - minNum + 1)

Edit:

Это, как будет результат программы

До: в ComboBox

enter image description here

Кодекс: показывает использование Enumerable.Range

enter image description here

После: показывает результат в ComboBox с самого начала после Button Нажмите

enter image description here


Если вы используете его правильно, и вы обязательно очистите предыдущие ComboBox, то Enumerable.Range(minNum, maxNum - minNum + 1)должен работать нормально.


Edit 2:

Если у вас есть какое-то значение после все, то, возможно, у вас есть жёстко прописанное значение в вашем ComboBox. В этом случае, возможно, вы хотите проверить свой designer -> Нажмите на ComboBox -> проверьте его свойство Collection. Там могут быть некоторые жестко закодированные значения. Альтернативный, попробуйте реализовать ComboBox.Items.Clear() перед добавлением элементов, чтобы убедиться, что все очищено.

+0

Хм, мне не повезло с этим. У меня все еще было 1-100 в раскрывающемся списке, и это делало мои флажки начинающимися с 6 до 100, а не только с шестью галочками. Также у меня есть maxNum, установленный как my.settings.numberSetting со значением 0, чтобы помочь восстановить настройки при следующем запуске программы. Надеюсь, это имеет смысл. – RockGuitarist1

+0

@ RockGuitarist1 emm, довольно трудно представить. Возможно, вы могли бы помочь, обновив вопрос? Похоже, что это вывод исходной проблемы, так как 'Enumerable.Range' сам по себе должен быть в состоянии предоставить вам диапазон значений, который вы хотите. – Ian

+0

Обновленный мой вопрос выше с более подробной информацией. – RockGuitarist1

Смежные вопросы