0

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

但是,当我从 DataGridView 中选择另一行时打开类似的第二个 MDI 子项,第一个 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;
    }
4

1 回答 1

0

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

换句话说,如果只有一个“控制台”对象,并且它由 MDI 父级拥有,那么两个 MDI 子级都依赖它。改变它,你就改变了所有 MDI 子项对该数据的显示。

于 2013-05-31T11:01:09.750 回答