在不同的选项卡中更改组合框的文本

Goz*_*Goz 5 c# combobox tabcontrol tabpage winforms

我有一个组合框,我需要在基于C#winforms的应用程序的另一个标签页中镜像.

当您从下拉列表中选择不同的项目时,我有完美的工作代码.然而,不幸的是,当我更改Text未单击的选项卡时,实际上没有任何实际发生.

如果我首先单击每个选项卡,那么一切都按预期工作.

现在我把它归结为某种形式的缺乏初始化首先发生.所以我试图在构造函数中选择每个选项卡.

tabControlDataSource.SelectedIndex = 0;
tabControlDataSource.SelectedIndex = 1;
// etc
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

我也试过打电话tabControlDataSource.SelectTab( 1 )但仍然不起作用.

有谁知道如何强制标签"初始化"?

Goz*_*Goz 4

好吧,通常我会在挣扎一个小时后发布问题,然后很快找到解决方案。

TabPage 是延迟初始化的。因此,它们在第一次可见之前不会完全初始化。

所以我将这段代码添加到我的构造函数中:

        tabControlDataSource.TabPages[0].Show();
        tabControlDataSource.TabPages[1].Show();
        tabControlDataSource.TabPages[2].Show();
Run Code Online (Sandbox Code Playgroud)

但这不起作用:(

然而,我突然想到,构造函数可能不是最好的地方。所以我创建了一个事件处理程序,Shown如下所示:

    private void MainForm_Shown( object sender, EventArgs e )
    {
        tabControlDataSource.TabPages[0].Show();
        tabControlDataSource.TabPages[1].Show();
        tabControlDataSource.TabPages[2].Show();
    }
Run Code Online (Sandbox Code Playgroud)

现在一切正常!