即時通訊使用c#.net窗體窗體應用程序。我有一個數據庫,有一些桌子。我有兩個組合框(A & B)。我已經使用sys.columns填充了組合框A和一個表的列名。現在,當我在組合框A中選擇一個項目時,組合框B應該填充除了在組合框A中選擇的選定項目以外的相同項目。一個組合框的項目不應該進入其他
回答
你應該刪除這個問題或this one這是關於相同的事情。無論如何,這裏是我的相同答案:
在所選項目中更改了A事件的事件,添加清除B的代碼,然後環繞A的Item集合中的每個項目並將其添加到B,只要當前項目的索引是在A.從的SelectedItem的索引不同
類似的信息(僞代碼中,未測試)
b.Items.Clear;
for(int i=0; i<A.Items.Count; i++)
{
if (i!=A.SelectedItemIndex)
{
b.Items.Add(A.Items[i]);
}
}
或
B.Items.Clear;
foreach(object o in A.Items)
{
b.Items.Add(o);
}
b.Items.Remove(A.SelectedItem);
應該這樣做一個脹。
我想你會在的
m_comboB.Items.AddRange((from item in m_comboA.Items.Cast<object>()
where item != m_comboA.SelectedItem
select item).ToArray());
Change事件的代碼填充/去除B的你也可以用這樣的方式不刪除重複項(山姆指出了這一點他評論):
m_comboB.Items.AddRange(Enumerable.Range(0, m_comboA.Items.Count)
.Where(index => index != m_comboA.SelectedIndex)
.Select(index => m_comboA.Items[index]).ToArray());
應該指出,如果組合A有任何重複的項目,這將刪除多個條目.... – 2010-04-27 12:13:17
是的,當然,但描述並沒有說任何關於這一點。 – Patrik 2010-04-27 12:15:53
我會使用靜態擴展方法和LINQ的組合。
靜態延伸部分是這樣的:
// static class...
public static class ComboBoxHelper
{
public static string GetSelectedIndexText(this ComboBox target)
{
return target.Items[target.SelectedIndex].ToString();
}
public static object[] GetNonSelectedItems(this ComboBox target)
{
string selected = GetSelectedIndexText(target);
try
{
object[] result =
target.Items.Cast<object>().Where(c => c.ToString()
!= selected).ToArray();
return result;
}
catch
{
return new object[] { };
}
}
public static void ReplaceItems(this ComboBox target, object[] newRange)
{
target.Items.Clear();
target.Items.AddRange(newRange);
}
}
而且LINQ:
// LINQ:
private void ComboBoxA_SelectedIndexChanged(object sender, EventArgs e)
{
comboBoxB.ReplaceItems(comboBoxA.GetNonSelectedItems());
}
HTH!
注意:可能比返回列表項的數組更有效,但我從來沒有發現這是一個大問題(例如整體性能等)的大問題.....
如果您有兩個具有相同名稱的項目,則使用您的解決方案將刪除這兩個項目。 – Patrik 2010-04-28 08:34:36
- 1. 從其他組合框的選定項目填充組合框
- 2. C#根據其他組合框添加項目到組合框
- 3. 基於其他組合框的一個組合框的值 - php
- 4. 一個組合框依賴於WPF中的其他組合框
- 5. 一個組合框/文本框更改後更新其他組合框的項目列表?
- 6. 設置一個項目flex組合框
- 7. WPF - 將一個組合框的選定項目更改爲另一個組合框的選定項目
- 8. 點擊一個組合框清除其他組合框,反之亦然
- 9. 比較2個組合框的項目
- 10. 其他項目中的一個項目的maven依賴項?
- 11. 組合框中的一項是粗體,其他都不粗體 - 如何製作?
- 12. 如何從另一個組合框中刪除組合框的選定項目
- 13. 如何更改組合框中的值,取決於vb.net中其他組合框中的選定項目
- 14. 自定義組合框控件裏面的其他自定義組合框控件,如何綁定項目?
- 15. Django的 - 如何讓其他組合框
- 16. 只選擇項目的一部分的組合框項目
- 17. 綁定的組合框項目指不同的字段項目
- 18. Flex組合框項目不對齊
- 19. 組合框不落下項目
- 20. 用組合框項目幫助顯示/隱藏另一個組合框
- 21. 填充組合框項目
- 22. 組合框項目左
- 23. 組合框選擇項目
- 24. 拆箱組合框項目
- 25. Qt一個項目知道其他類
- 26. java swing組合框選擇和鏈接到其他組合框
- 27. 訪問窗體顯示選定組合框項目的其他表字段
- 28. 如何從其他表單中獲取組合框的選定項目?
- 29. 在一個消息框中列出所有組合框項目
- 30. JavaFX的組合框一個可編輯的項目
問題是....? – 2010-04-27 12:00:55
重複的問題:http://stackoverflow.com/questions/2720648/working-with-two-combo-boxes/2720728#2720728 – 2010-04-27 12:09:57