2014-02-09 1 views
1

Я уверен, что это действительно что-то глупое в моем коде, но я не могу получить выбранное значение из моего списка со списком для меня. Вот мой код.не может получить выбранное значение combobox, возвращает пустые

 Dim objScales As List(Of My.Scale) = Nothing 
     Dim ExistingDimScale As Double = 0 
     Dim ExistingDimScaleIndex As Double = 0 

     _ScaleForm = New ScaleForm 

     Try 
      Me.LoadProperties() 
      If Me.ConfigUnits <> 0 Then 
       'Get the right scales per units 
       If Me.ConfigUnits = 1 Then 'imperial 
        objScales = Me.GetImperialScales() 
       Else 
        objScales = Me.GetMetricScales() 
       End If 
       'Load up the combobox values 
       If objScales IsNot Nothing Then 
        _ScaleForm.cmbScale.DisplayMember = "Name" 
        _ScaleForm.cmbScale.ValueMember = "DimScale" 
        For Each objScale In objScales 
         _ScaleForm.cmbScale.Items.Add(objScale) 
         'MsgBox(objScale.Name.ToString) 
        Next 

        'Set the selected Index to the current dim scale 
        Double.TryParse(Autodesk.AutoCAD.ApplicationServices.Application.GetSystemVariable("Dimscale").ToString, ExistingDimScale) 
        ExistingDimScaleIndex = objScales.FindIndex(Function(Val) Val.DimScale = ExistingDimScale) 
        If ExistingDimScaleIndex = -1 Then 
         _ScaleForm.cmbScale.SelectedIndex = 0 
        Else 
         Integer.TryParse(ExistingDimScaleIndex.ToString, _ScaleForm.cmbScale.SelectedIndex) 
        End If 
       Else 
        MsgBox("There were no scales set") 
       End If 
      Else 
       Throw New System.Exception("Error Reading Configuration Units") 
      End If 
     Catch ex As System.Exception 
      MsgBox(ex.Message) 
      'handle it here internally 
     End Try 

     _ScaleForm.ShowDialog() 

     If DialogResult.OK = 1 Then 
      MsgBox(_ScaleForm.cmbScale.SelectedValue) 
     End If 

Второй из последней строки MsgBox(_ScaleForm.cmbScale.SelectedValue), это где я хочу использовать выбранное значение, чтобы сделать материал, но он продолжает появляться пустые в MessageBox. Я устал и не знаю, почему он не работает.

+0

Вы можете разместить код GetImperialScales() и GetMetricScales()? – bdn02

ответ

2

Вы не устанавливаете свойство DataSource для ComboBox, но вставляете каждый элемент по одному в коллекцию элементов. Попробуйте установить DataSource

_ScaleForm.cmbScale.DataSource = objScales 

и вы получите SelectedValue набор.
В альтернативе можно прочитать свойство SelectedItem, который будет возвращать объект Scale, если было выбрано что-то, а затем получить DIMSCALE поля из этого экземпляра

if DialogResult.OK = _ScaleForm.ShowDialog() Then 
     if _ScaleForm.cmbScale.SelectedItem IsNot Nothing Then 
      My.Scale obj = CType(_ScaleForm.cmbScale.SelectedItem, My.Scale) 
      .... 
     End If 
    End If 
+0

Спасибо, что сработал. – joeb

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