更改其他选项卡中组合框的文本

本文关键字:组合 文本 其他 选项 | 更新日期: 2023-09-27 18:00:27

我有一个组合框,需要在基于C#winforms的应用程序中的另一个选项卡页面中镜像它。

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

如果我第一次点击每个选项卡,那么一切都如预期。

现在我把这归结为某种形式的缺乏初始化首先发生。因此,我尝试在构造函数中选择每个选项卡。

tabControlDataSource.SelectedIndex = 0;
tabControlDataSource.SelectedIndex = 1;
// etc

但这行不通。

我也试过呼叫tabControlDataSource.SelectTab( 1 ),但仍然不起作用。

有人知道我如何强制选项卡"初始化"吗?

更改其他选项卡中组合框的文本

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

选项卡页面的初始化很缓慢。因此,在第一次显示之前,它们不会完全初始化。

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

        tabControlDataSource.TabPages[0].Show();
        tabControlDataSource.TabPages[1].Show();
        tabControlDataSource.TabPages[2].Show();

但这并没有奏效:(

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

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

现在一切都在运转!

在这种情况下,也许您还可以使用某种"惰性"同步(初始化)。快速稳健的想法:轮询计时器以更新内容(一旦您看到选项卡页面,它就会更新内容),不依赖于第二个选项卡(没有更改的事件使组合框更新第二个标签内容,使用第一个选项卡中的原始组合框,或者更确切地说,将其内容放在两个组合框类都可访问的底层,等等),当选项卡变为可见时"重新初始化"(此时您还初始化第二个组合框)。。。

不可能是一个小时,没有办法=D