This example demonstrates how to manually process received Bing Search request results.
MainWindow.xaml.vb |
Private Sub searchProvider_SearchCompleted(ByVal sender As Object, ByVal e As BingSearchCompletedEventArgs)
If e.Cancelled Then
Return
End If
If e.RequestResult.ResultCode <> RequestResultCode.Success Then
Return
End If
Dim sb As New StringBuilder()
Dim requestResult As SearchRequestResult = e.RequestResult
sb.Append(String.Format("Result Code: {0}" & vbLf, requestResult.ResultCode))
If String.IsNullOrEmpty(requestResult.FaultReason) Then
sb.Append(String.Format("Fault Reason: (none)" & vbLf, requestResult.FaultReason))
Else
sb.Append(String.Format("Fault Reason: {0}" & vbLf, requestResult.FaultReason))
End If
sb.Append(String.Format("Search Location: {0}" & vbLf, requestResult.Keyword))
sb.Append(String.Format("Estimated Matches: {0}" & vbLf, requestResult.EstimatedMatches))
sb.Append(String.Format("SearchResults:" & vbLf & "{0}", ProcessLocationList(requestResult.SearchResults)))
tbSearchResult.Text = sb.ToString()
End Sub
Private Function ProcessLocationList(ByVal results As List(Of LocationInformation)) As String
If results Is Nothing Then
Return ""
End If
Dim sb As New StringBuilder()
For i As Integer = 0 To results.Count - 1
sb.Append(String.Format("{0}) {1}", i + 1, ProcessLocationInformation(results(i))))
Next i
Return sb.ToString()
End Function
Private Function ProcessLocationInformation(ByVal info As LocationInformation) As String
If info Is Nothing Then
Return ""
End If
Dim sb As New StringBuilder()
sb.Append(String.Format("{0}" & vbLf, info.DisplayName))
sb.Append(String.Format(vbTab & "Adress: {0}" & vbLf, info.Address))
sb.Append(String.Format(vbTab & "Location: {0}" & vbLf, info.Location))
Return sb.ToString()
End Function
|
MainWindow.xaml.cs |
private void searchProvider_SearchCompleted(object sender, BingSearchCompletedEventArgs e) {
if (e.Cancelled) return;
if (e.RequestResult.ResultCode != RequestResultCode.Success) return;
StringBuilder sb = new StringBuilder();
SearchRequestResult requestResult = e.RequestResult;
sb.Append(String.Format("Result Code: {0}\n", requestResult.ResultCode));
if (String.IsNullOrEmpty(requestResult.FaultReason))
sb.Append(String.Format("Fault Reason: (none)\n", requestResult.FaultReason));
else
sb.Append(String.Format("Fault Reason: {0}\n", requestResult.FaultReason));
sb.Append(String.Format("Search Location: {0}\n", requestResult.Keyword));
sb.Append(String.Format("Estimated Matches: {0}\n", requestResult.EstimatedMatches));
sb.Append(String.Format("SearchResults:\n{0}", ProcessLocationList(requestResult.SearchResults)));
tbSearchResult.Text = sb.ToString();
}
string ProcessLocationList(List<LocationInformation> results) {
if (results == null) return "";
StringBuilder sb = new StringBuilder();
for (int i = 0; i < results.Count; i++) {
sb.Append(String.Format("{0}) {1}", i + 1, ProcessLocationInformation(results[i])));
}
return sb.ToString();
}
string ProcessLocationInformation(LocationInformation info) {
if (info == null) return "";
StringBuilder sb = new StringBuilder();
sb.Append(String.Format("{0}\n", info.DisplayName));
sb.Append(String.Format("\tAdress: {0}\n", info.Address));
sb.Append(String.Format("\tLocation: {0}\n", info.Location));
return sb.ToString();
}
|