Что - то странное- моя ошибка или ошибка Microsoft?
Это один из тех вопросов, где вы должны увидеть его сами, чтобы понять - я напуган этим, так как не могу понять, почему.... Пожалуйста, спасите мой рассудок !
Я использую VS2017, VB.NET, Winforms и фреймворк 4.8
Я успешно использую этот класс в течение нескольких лет, он использовался как .itemdata для .net для combobox/listboxes и т. д..
Поэтому создайте новый проект winforms, добавьте новый класс и вставьте ниже, перезаписав предварительно сгенерированный код класса.
Public Class Mylist Private sName As String ' You can also declare this as String,bitmap or almost anything. ' If you change this delcaration you will also need to change the Sub New ' to reflect any change. Also the ItemData Property will need to be updated. Private iID As String ' Default empty constructor. Friend Sub New() sName = "" ' This would need to be changed if you modified the declaration above. iID = "" End Sub Friend Sub New(ByVal Name As String, ByVal ID As String) sName = Name iID = ID End Sub Public Property Name() As String Get Return sName End Get Set(ByVal sValue As String) sName = sValue End Set End Property ' This is the property that holds the extra data. Public Property ItemData() As String Get Return iID End Get Set(ByVal iValue As String) iID = iValue End Set End Property ' This is neccessary because the ListBox and ComboBox rely ' on this method when determining the text to display. Public Overrides Function ToString() As String Return sName End Function End Class
Падение компонент ComboBox на форму form1, установите его в dropdownlist для
Теперь в подзаголовок Form1_Load вставьте вот это:
(это элемент со значением, равным количеству минут против этого элемента, то есть 1 день равен 1440 минутам) и так далее.
With ComboBox1 .Items.Add(New Mylist("1 Day only", "1440")) .Items.Add(New Mylist("2 Days only", "2880")) .Items.Add(New Mylist("4 Days only", "5760")) .Items.Add(New Mylist("1 Week only", "10080")) .Items.Add(New Mylist("2 Weeks only", "20160")) .Items.Add(New Mylist("4 Weeks only", "40320")) .Items.Add(New Mylist("2 Months only", "86400")) .Items.Add(New Mylist("3 Months only", "129600")) .Items.Add(New Mylist("6 Months only", "262800")) .Items.Add(New Mylist("1 Year only", "525600")) .Items.Add(New Mylist("2 Years only", "1051200")) .Items.Add(New Mylist("3 Years only", "1576800")) .Items.Add(New Mylist("5 Years only", "2628000")) .Items.Add(New Mylist("7 Years only", "3679200")) .Items.Add(New Mylist("10 Years only", "5256000")) .Items.Add(New Mylist("Accumulative Indefinitely/Forever", "0")) End With
и, наконец, вставьте это в ComboBox1_SelectedIndexChanged sub
Dim Mlist As Mylist Dim RecID As Int64 = 0 Mlist = CType(ComboBox1.SelectedItem, Mylist) 'RecID = Convert.ToInt64(Mlist.ItemData) MsgBox(Convert.ToInt64(Mlist.ItemData)) 'MsgBox(Convert.ToInt64(Mlist.ItemData))
Закомментированный код выше, я пытался выяснить, имеет ли этот бит кода комментированный/раскомментированный какое-либо значение, и это не так.
Итак, теперь запустите проект, у вас есть куча элементов под выпадающим списком, выберите один или два из первых элементов, и соответствующие минуты появятся в соответствии с новым классом mylist.
Теперь выберите 1 год... все в порядке, да?
Выберите 2 года... все в порядке, да?
Теперь пропустите и выберите 5 лет - все ок -да
Вернитесь назад и выберите 3 года ... бум !
Теперь выберите 10 лет ... все в порядке
Теперь выберите 7 лет ... бум !
Какого черта это происходит?
Теперь вы можете сказать - почему бы просто не изменить класс mylist и не сделать идентификаторы int64, в конце концов, эти itemdata-это всего лишь числа.
Ну что ж - продолжайте :)
затем изменение вызывает ошибки в Visual Studio, где вы не можете запустить приложение:
"Запятая, ')' или ожидаемое продолжение допустимого выражения." ошибки плюс "символ недопустим" и угадайте где ??? на отметках 3 года и 5 лет, а не на отметках 6 лет или 10 лет, которые имеют еще более высокие числовые значения
Теперь я знаю, что, вероятно, спал около 18 часов на прошлой неделе, но я не думаю, что схожу с ума - не так ли ? :P
Я использовал класс mylist в течение многих лет, для всех видов ценностей - Я никогда не использовал его в этой конкретной манере, поэтому я могу упустить ослепительно очевидное...
Что я уже пробовал:
Изменение класса со string на int64
phil.o
Пожалуйста, дайте определение слову "бум".
Member 12561559
Отключается, взрывается, не работает, ошибка о том, что не удается преобразовать строку.
phil.o
Пожалуйста, когда вы подробно описываете проблему, используйте точное сообщение об ошибке в первую очередь.
Richard MacCutchan
Действительно ли слишком сложно дать правильное техническое объяснение, включающее точный текст ошибки или исключения?