Комбинированный список приложений WPF vb.net не ждет выбора пользователя - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть приложение wpf vb.net (написано в сообществе VS 2019), содержащее два поиска по сайту.Первый поиск - это поиск строки, который либо выдает один результат, который я затем загружаю во второй поиск, либо он выдает более одного результата, который я загружаю в комбинированный список, чтобы позволить пользователю выбирать.Моя проблема - заставить приложение остановиться и позволить пользователю выбирать из выпадающего списка.Я реализовал обходной путь, который использует модальную форму, содержащую выпадающий список, и это позволяет пользователю выбирать из выпадающего списка и предоставлять значение для второго поиска.Мне посоветовали использовать событие «change» для комбинированного списка, но оно недоступно, мне также посоветовали использовать selectedindexchanged, но элемент управления не позволяет выпадающему списку выбрать что-либо.Я также пытался использовать различные формы addhandler (закомментировано в коде ниже).

        ' Build the 'Search API' URL. 
    Dim uri = New Uri("https://api.themoviedb.org/3/search/tv?" _
                       & "api_key=" & TMDBAPIKey _
                       & "&language=en-US" _
                       & "&query=" & sLvl1NodeName _
                       & "&page=1" _
                       & "&first_air_date_year=" & sFirstXmitYear)

    ' Retrieve the IMDB ID with an API Search function using the series title
    Try
        Dim Site = New WebClient()
        Answer = Site.DownloadString(uri)
    Catch ex As NullReferenceException
        Dim messagetext As String = "The 'Search API' from GetDetails popup failed with : " _
        & ex.Message & " for: Title=" & sLvl1NodeName
        Me.txtErrorMessageBox.Text = messagetext
        Exit Sub
    End Try

    ' Deserialise the answer
    Dim JsonElem As TMDBtitle = JsonConvert.DeserializeObject(Of TMDBtitle)(Answer)

    ' If the websearch finds only one result this is the TV series we want, if more than
    ' one result is found load the results into a combobox and get the user to choose.
    If JsonElem.results.Length = 1 Then
        TVSeriesID = JsonElem.results(0).id
    Else
        Me.cmbChooseSeries.BeginUpdate()
        Me.lblChooseSeries.Text = Me.lblChooseSeries.Text & "( " & JsonElem.results.Length & " )"
        Me.cmbChooseSeries.Items.Clear()
        For Each titleresult In JsonElem.results
            ComboSeriesChoice = titleresult.name & " | " &
                                titleresult.id & " | " &
                                titleresult.first_air_date & " | " &
                                titleresult.overview
            Me.cmbChooseSeries.Items.Add(ComboSeriesChoice)
        Next

        cmbChooseSeries.DroppedDown = True
        Me.cmbChooseSeries.EndUpdate()

        If cmbChooseSeries.SelectedIndex <> -1 Then
            Dim var1 = cmbChooseSeries.SelectedText
        Else
            Threading.Thread.Sleep(3000)
        End If

        'AddHandler cmbChooseSeries.MouseDoubleClick,
        'Sub()
        'Threading.Thread.Sleep(3000)
        'End Sub

        TVSeriesID = cmbChooseSeries.SelectedItem

    End If

    ' Build the 'TV Search API' call URL. 
    Dim urix = New Uri("https://api.themoviedb.org/3/tv/" _
                       & TVSeriesID & "?" _
                       & "api_key=" & TMDBAPIKey _
                       & "&language=en-US")

    Try
        Dim site = New WebClient()
        Answer = site.DownloadString(urix)              ' download the JSON from the server.
    Catch ex As NullReferenceException
        Dim MessageText As String = "The 'TV Search API' from GetDetails popup failed with : " _
        & ex.Message & " for: Title=" & sLvl1NodeName & " ID=" & popupid
        Me.txtErrorMessageBox.Text = MessageText
        Exit Sub
    End Try

    Dim jsonelemx = JsonConvert.DeserializeObject(Of TVResult)(Answer)

    lstDetailItems(0) = "Name"
    lstDetailItems(1) = jsonelemx.name
    lstDetailItems(2) = (String.Empty)
    Dim DelItems = New ListViewItem(lstDetailItems)
    Me.lstSeriesDetails.Items.Add(DelItems)

    lstDetailItems(0) = "Status"
    lstDetailItems(1) = jsonelemx.status
    lstDetailItems(2) = (String.Empty)
    DelItems = New ListViewItem(lstDetailItems)
    Me.lstSeriesDetails.Items.Add(DelItems)

    lstDetailItems(0) = "Episode run time"
    lstDetailItems(1) = Convert.ToString(jsonelemx.episode_run_time(0))
    lstDetailItems(2) = (String.Empty)
    DelItems = New ListViewItem(lstDetailItems)
    Me.lstSeriesDetails.Items.Add(DelItems)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...