【问题标题】:ComboBox behaving in a not expected wayComboBox 以意想不到的方式表现
【发布时间】:2013-12-27 00:07:56
【问题描述】:

我在CtrlMap 中使用GetAllCities() 方法填充了两个组合框。

我的想法是,每当我在 ddFrom 上选择另一个城市时,它应该将所有城市数据绑定到 ddTo(稍后删除完全相同的选择,因此用户将无法选择同一个城市作为点从和到)。

但是,每当我在 ddFrom 上选择某些内容时,ddTo 会填充(应该如此),但 SelectedIndexddFrom 相同。反之亦然。如果我选择一个城市,假设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


【解决方案1】:

我相信这是因为您使用的是相同的数据源。你可能需要

private void ddFrom_SelectedIndexChanged(object sender, EventArgs e)
{
    CtrlMap ctrlMapTo = new CtrlMap();
    ddTo.DataSource = ctrlMap2.GetAllCities();
    ddTo.DisplayMember = "name";
}

【讨论】:

    【解决方案2】:

    答案可以在Strange behavior of Windows Forms combobox control 找到

    每个组合框DataSource 属性应分配给不同的BindingSource 对象。

    例子:

    cmbDataType1.DataSource = new BindingSource(datasource, "");
    cmbDataType2.DataSource = new BindingSource(datasource, "");
    

    或者在我的特殊情况下:

    ddFrom.DataSource = new BindingSource(ctrlMap.GetAllCities(), "");
    ddTo.DataSource = new BindingSource(ctrlMap.GetAllCities(), "");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-04
      • 1970-01-01
      • 2014-01-19
      • 2013-11-07
      • 1970-01-01
      • 2015-05-31
      • 2021-05-09
      • 1970-01-01
      相关资源
      最近更新 更多