控制其他UserControl的控制更改

时间:2016-01-04 15:12:56

标签: c# winforms

我有一个包含组合框/下拉列表的用户控件。此用户控件多次使用,并动态添加到面板。当我在一个用户控件上更改组合框的值时,它会改变其余的吗?有谁知道如何排序这个?

enter image description here

所以澄清一下。当我更改top usercontrol(7002)的组合框中的值时,它会将第二个用户控制组合框值更改为我选择的任何值。

谢谢!

添加控件的代码;

foreach (Common.UserDTO UDTO in BLL.User.GetAllUsers())
{
    Admin_UserControls.UserBar UB = new Admin_UserControls.UserBar(UDTO);
    UB.Location = new Point(0, int.Equals(pnlUserBlock.Controls.Count, 0) ? 0 : pnlUserBlock.Controls[pnlUserBlock.Controls.Count - 1].Bottom);

    pnlUserBlock.Controls.Add(UB);
}

构造函数/加载事件:

private Common.UserDTO UDTO;

public UserBar(Common.UserDTO UDTO)
{ 
    InitializeComponent();

    /* Store the passed in UserDTO */
    this.UDTO = UDTO;
}

private void UserBar_Load(object sender, EventArgs e)
{
    /* Setup the Drop down list */
    cbRanks.DataSource = Common.Helper.GetRanksDT();
    cbRanks.DisplayMember = "Rank";
    cbRanks.ValueMember = "ID";

    /* Setup the users */
    lblUsername.Text = UDTO.Username;
    cbRanks.SelectedValue = UDTO.RankID;
}

1 个答案:

答案 0 :(得分:2)

如果其他人在将来遇到同样的问题,请将上述评论纳入答案。

创建的UserControl的每个实例都绑定到同一个DataSet,为您提供此结果。

由行引起:

cbRanks.DataSource = Common.Helper.GetRanksDT();

要解决此问题,只需在每次创建UserControl时声明一个新实例,请参阅讨论一些方法的this post