0

リストからアイテムを選択すると、選択プロセス全体が2回実行されます。

private void serving_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e)
{
    try
    {
        Debug.WriteLine("Serving added to diary");
        login(null, null);
    }
    catch (WebException)
    {
        Debug.WriteLine(e.Error);
    }
    ServingList.SelectedIndex = -1;
}

私が除外するときServingList.SelectedIndex = -1;、プロセスは一度続きます。ただし、選択したインデックスを-1に戻す必要があります。

私は何が欠けていますか?

SelectionChangedのハンドラー:

private void ServingList_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        Debug.WriteLine("\n[#] ServingList_SelectionChanged");
        Debug.WriteLine("Selected item:" + ServingList.SelectedIndex);
        Debug.WriteLine("ID of latest TP: " + tp.id);

        String itemid = tp.id;
        Produkt temp = (Produkt)ServingList.SelectedItem;

        if (servingid.Length < 1)
        {
            servingid = temp.servingid;
        }

        WebClient addserving = new WebClient();
        addserving.Credentials = new NetworkCredential(username.Text, passwort.Password);

        addserving.Encoding = System.Text.Encoding.GetEncoding("ISO-8859-1");
        addserving.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
        addserving.UploadStringAsync(new Uri("http://fddb.info/api/v8/diary/add_item.xml?apikey=ICPOKUI83555PU43"), "&item_id=" + itemid + "&serving_id=" + servingid);
        addserving.UploadStringCompleted += new UploadStringCompletedEventHandler(serving_UploadStringCompleted);
        Pivot.SelectedIndex = 0;

    }
4

1 に答える 1

0

無限ループを引き起こしています。

リストボックスがあり、それを変更するとアクションが発生します

変更 X > アクション X > ハンドル X > 変更 X (-1) > アクション X

等。

条件のループを何らかの形で中断する必要があります

private void serving_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e) 
{ 

     //Break condition
     if (ServingList.SelectedIndex != -1)
     {
        try 
        { 
            Debug.WriteLine("Serving added to diary"); 
            login(null, null); 
        } 
        catch (WebException) 
        { 
            Debug.WriteLine(e.Error); 
        } 
        ServingList.SelectedIndex = -1; 
     }
}

これを行うことで、必要な場合にのみ -1 に設定します。そうしないと、実際には既に設定されているにもかかわらず、選択したインデックスを継続的に -1 に設定し続けます。

于 2012-09-13T13:44:06.863 に答える