C# 列表框选择保持循环
当我从列表中选择一个项目时,整个选择过程将进行两次C# 列表框选择保持循环,c#,listbox,selection,C#,Listbox,Selection,当我从列表中选择一个项目时,整个选择过程将进行两次 private void serving_UploadStringCompleted(object sender, UploadStringCompletedEventArgs e) { try { Debug.WriteLine("Serving added to diary"); login(null, null); } catch (WebException) {
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;
}
你造成了一个内循环 您有您的列表框,更改它会导致一个操作 更改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,它也会继续将其设置为-1。选择过程是什么意思?当我从列表中选择一个项目时,该项目将添加到其他列表中。但是上面的代码会发生两次这种情况。ServingList上有任何事件处理程序吗?什么订阅了此事件?是的,有。我只是把它贴在我原来的帖子里。不一定是无限的;如果SelectedIndex属性已合理编程,则只有当值实际发生更改时(变为-1后不会发生更改),它才会调用更改的事件。这将与OP描述的行为相匹配,即第一次分配-1后只需再调用一次。我刚刚测试了此方法,但由于某些原因,selectedIndex从-1开始。