web-dev-qa-db-ja.com

値が予想範囲内にありません

次のコードを使用してリストボックスを更新します。これにより、Webサービスからリストが取得されます。

client.userKeywordsCompleted += new EventHandler<userKeywordsCompletedEventArgs>(client_userKeywordsCompleted);
client.userKeywordsAsync();

を使用して:

void client_userKeywordsCompleted(object sender, userKeywordsCompletedEventArgs e)
{

    string result = System.Convert.ToString(e.Result);

    for (int i = 0; i < e.Result.Count; i++)
    {

        ListBoxItem lbitem = new ListBoxItem();

        lbitem.Name = "lb_" + i;
        lbitem.Content = e.Result[i];

        lbitem.AddHandler(UIElement.MouseLeftButtonDownEvent, new MouseButtonEventHandler(ListBoxItem_DoubleClickEvent), true);

        listBox1.Items.Add(lbitem);

    }

これはうまく機能します。子ウィンドウのロード時に使用するため、ListBoxはデータベースからリストを取得しますが、ユーザーがListBoxの項目の1つを選択すると、選択したアイテムを編集するオプション。そのため、編集が完了すると、データベース内のテーブルの列を更新する編集ボタンがあります。そのため、ボタンをクリックすると、前述のコードを再度呼び出して、ListBoxを新しい資格情報で更新します。ただし、これによりエラーが返されます-

"Value does not fall within the expected range."

ボタンクリックでWebメソッドを呼び出せない理由は、ListBox ???を更新するだけだからです。

10
Ebikeneser

これは、同じ名前のListBoxItemをページに追加しようとしているためである可能性があります。

リストボックスのコンテンツを新しく取得した値で更新する場合は、リストボックスのコンテンツを最初に手動で削除する必要があります。そうしないと、ループはlb_1を再度作成して同じリストに追加しようとします。

発生した同様の問題については、こちらをご覧ください Silverlight:値が予期される範囲に収まりませんexception

乾杯、

11
Stainedart

Visual Studio 2008から「値が予期される範囲内にない」という同じ通知をまったく別の理由で使用しようとしたときに、ツール-> Windows Embedded Silverlightツール-> Windows Embedded ProjectのSilverlightを更新しました。

多くの時間を費やした後、リソースファイルがなく、更新ツールが.RCファイルを探すことが問題であることがわかりました。

そのための解決策は、リソースフォルダーに.RCファイルを追加することです。私はそれがそこに誰かを助けることを願っています

2
Chaim Gluck

WSS 3.0の場合、最近同じ問題が発生しました。これは、コードからアクセスされた列がwssリストに存在していなかったためです。

0
CPW