打开相同的MDI子项时,Combobox值会发生变化

时间:2013-05-31 10:29:11

标签: c# datagridview combobox mdi

当我双击DataGridViewRow时,我打开一个MDI子项。在MDI子项中,将显示此选定行的值。其中一个值显示在组合框中。当我打开第一个MDI孩子时,一切顺利,组合框显示正确的值(正确的控制台)。

但是,当我打开一个类似的第二个MDI子项从DataGridView中选择另一行时,第一个MDI子项中的组合框值将更改为必须在第二个MDI子项中显示的值。第一个MDI子窗体中的所有其他文本框值仍然可以正确显示。

有没有人能解决这个问题?

MDI家长表格

private void dataGridViewGames_DoubleClick(object sender, EventArgs e)
    {
        FormGame formGame = new FormGame();
        formGame.MdiParent = this.MdiParent;
        formGame.Name = dataGridViewGames.SelectedRows[0].Index.ToString();
        formGame.Rij = dataGridViewGames.SelectedRows[0].Index;
        formGame.Consoles = consoles;
        formGame.Games = games;
        formGame.Show();
        formGame.LeesGame();
    }

MDI儿童表格

private void FormGame_Load(object sender, EventArgs e)
    {
        comboBoxConsole.DataSource = consoles;
        comboBoxConsole.DisplayMember = "Naam";
        comboBoxConsole.ValueMember = "Id";
    }

    public void LeesGame()
    {
        DBGames.GameRow gameRij = (DBGames.GameRow)games.Rows[rij];
        this.Text = "Game - " + gameRij.Naam;
        textBoxNaam.Text = gameRij.Naam;
        textBoxPrijs.Text = gameRij.Prijs.ToString();
        textBoxAfbeelding.Text = gameRij.Afbeelding;
        comboBoxConsole.SelectedValue = gameRij.ConsoleId;
    }

1 个答案:

答案 0 :(得分:0)

我怀疑这是因为您将组合框源设置为“控制台”,并且当第二个子项打开时,“控制台”的上下文已更改(指向不同的记录。您需要两个单独的实例“控制台”数据源提供两个不同的组合框。

换句话说,如果只有一个“控制台”对象,并且它由MDI父级拥有,则两个MDI子级都依赖它。更改它,然后更改所有MDI子项的数据显示。