11

次のコードを使用してリストボックスを更新しています。これは 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はデータベースからリストを取得しますが、ユーザーが でアイテムの 1 つを選択ListBoxすると、選択したアイテムを編集するオプションが表示されます。したがって、編集が完了すると、データベース内のテーブルの列を更新する編集ボタンが表示されます。ボタンをクリックすると、前述のコードを再度呼び出してListBox、新しい資格情報で更新します。ただし、これによりエラーが返されます。

「値が想定範囲内にありません。」

ボタンのクリック時に Web メソッドを呼び出せないのはなぜListBoxですか?

4

3 に答える 3

11

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

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

Silverlightで発生した同様の問題については、こちらを参照してください: 値が期待される範囲内に収まらないという例外

于 2012-04-23T17:15:57.910 に答える
2

ツール - > Windows Embedded Silverlightツール - > Windows EmbeddedプロジェクトのSilverlightを更新しようとしているときに、まったく別の理由から、Visual Studio 2008から同じ通知「値が期待される範囲内に収まりません」が表示されました。

何時間も費やした後、問題はリソース ファイルがなく、更新ツールが .RC ファイルを探していることにあることがわかりました。

したがって、解決策は、リソース フォルダーに .RC ファイルを追加することです。それよりも完全に機能します。それが誰かを助けることを願っています

于 2012-12-23T12:50:20.983 に答える