【发布时间】:2013-12-27 00:07:56
【问题描述】:
我在CtrlMap 中使用GetAllCities() 方法填充了两个组合框。
我的想法是,每当我在 ddFrom 上选择另一个城市时,它应该将所有城市数据绑定到 ddTo(稍后删除完全相同的选择,因此用户将无法选择同一个城市作为点从和到)。
但是,每当我在 ddFrom 上选择某些内容时,ddTo 会填充(应该如此),但 SelectedIndex 与 ddFrom 相同。反之亦然。如果我选择一个城市,假设ddTo 上的New York 它也在ddFrom 上被选中。
在GUINewBooking.Designer.cs 中只注册了这个事件处理程序:this.ddFrom.SelectedIndexChanged += new System.EventHandler(this.ddFrom_SelectedIndexChanged);
ddTo 没有注册事件处理程序。有什么想法吗?
public partial class GUINewBooking : Form
{
private CtrlMap ctrlMap;
public GUINewBooking()
{
InitializeComponent();
ctrlMap = new CtrlMap();
ddFrom.DataSource = ctrlMap.GetAllCities();
ddFrom.DisplayMember = "name";
}
private void ddFrom_SelectedIndexChanged(object sender, EventArgs e)
{
ddTo.DataSource = ctrlMap.GetAllCities();
ddTo.DisplayMember = "name";
}
}
【问题讨论】:
-
答案就在GetAllCities的代码中。请出示一下
-
其实没有。
GetAllCities()只返回一个列表。我在这里找到了答案:stackoverflow.com/questions/8720683/… -
但是,如果 GetAllCities 返回相同的对象实例,那么行为正是您得到的。
-
@Nikola 有点像,似乎
GetAllCities每次都返回相同的实例 -
@Steve, @Guru Stron 它每次都会返回相同的东西,但是两者的行为不应该完全相同(在
ddTo上选择A,在A上选择ddFrom,等)
标签: c# winforms combobox windows-applications