更改其他选项卡中组合框的文本
本文关键字:组合 文本 其他 选项 | 更新日期: 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