-2

劇場や映画を txtResults.Text ボックスに表示しようとしています。

ここに私のコードがあります...

 MovieInformation MI = new MovieInformation();

        int rad = int.Parse(txtRadius.Text);

        txtResults.Text = MI.GetTheatersAndMovies(txtZip.Text, rad);

エラーは次のとおりです: エラーは型 'WebShowTimes.movi​​es.Theater[]' を 'string' に暗黙的に変換できません

4

4 に答える 4

2

コンパイラは、サービスが期待するパラメーターを渡していないことを示しています。

あなたのサービスは、特定の郵便番号を中心としたエリア (半径) 内の劇場を検索すると思われます。

やってみました

 txtResults.Text = MI.GetTheatersAndMovies(txtZip.Text,txtRadius.Text);

EDIT:新しいエラーメッセージを見ると、メソッドが配列を返すことが明らかになりましたWebShowTimes.movies.Theater[]

もちろん、これは文字列ではなく、TextBox.Text プロパティの値として使用することはできません。そのため、返された各 Theater を読み取り、文字列に表示する必要があるプロパティを取得するループが必要です。

例えば:

WebShowTimes.movies.Theater[] theathers = MI.GetTheatersAndMovies(txtZip.Text, rad);
foreach(WebShowTimes.movies.Theater t in theaters)
{
    txtResults.Text += t.Name + ", " + t.Address + "\r\n";
}

txtResult が、サービスによって返されたすべてのシアターを表示するのに十分な高さを持つ複数行のテキスト ボックスであると仮定します。

于 2012-12-20T20:25:06.623 に答える
1

より詳細なヘルプが必要な場合は、MovieInformationのコードを投稿してください。ただし、コンパイラーは、単一の文字列パラメーターを受け取るMovieInformationというメソッドがサービスにないことを通知しているだけです。GetTheatersAndMovies

編集:

コメントに投稿されたWebサービスのURLに基​​づいて、次のようにWebサービスを呼び出す必要があります。

 MI.GetTheatersAndMovies(txtZip.Text,txtRadius.Text);

Theaterそして、次のようなオブジェクトの配列を受け取ります。

<Theater>
      <Name>string</Name>
      <Address>string</Address>
      <Movies>
        <Movie xsi:nil="true" />
        <Movie xsi:nil="true" />
      </Movies>
</Theater>

アップデート2次のようなことをする必要があります。

var result = MI.GetTheatersAndMovies(txtZip.Text, rad);
StringBuilder sb  = new StringBuilder();
foreach(var item in result)
{
     sb.Append(string.Format("Theater Name: {0}",item.Name));
     sb.Append(string.Format("Address: {0}",item.Address));
     foreach (var movie in item.Movies)
     {
          sb.Append(string.Format("Movie: {0}",movie.Name));
          sb.Append(string.Format("Rating: {0}",movie.Rating));
     }
}

txtResults.Text = sb.ToString();

ここでWebサービスのWSDLを確認できます。これにより、Webサービスによって返される各オブジェクトがどのように表示されるかが正確にわかります。

于 2012-12-20T20:25:44.663 に答える
0

返される結果は配列であるため、適切な型で取得し、ループして次のようにムービーを 1 つずつ取得します。

MI.Theaters  th=MI.GetTheatersAndMovies(txtZip.Text, rad);
 foreach(Mi.movie in th)
   {
     string moviname=mi.movie.name;
   } 

うまくいけば、これはあなたにアイデアを与えるでしょう.

于 2012-12-22T21:49:44.250 に答える
0

どうやら、1 つのパラメーターを渡して Web メソッドを呼び出しており、1 つのパラメーターを受け取るオーバーロードはありません。おそらく、そのパラメーターを受け入れる新しいメソッドを作成し、それを適切に使用する必要があります。または、渡されているパラメーターを削除するだけです

于 2012-12-20T20:24:58.717 に答える