【发布时间】:2016-02-24 04:45:21
【问题描述】:
我的 c# winforms 程序有一个选项卡控件,其中有几个选项卡显示列表视图、标签、按钮等。选项卡页在加载时不显示。简化后的代码如下:
public main()
{
InitializeComponent();
removeTabPages(); //removes all but one; deleting this line doesn't change anything
main_tabcontrol.SelectedIndex = 0; //doesn't change anything no matter where i put it
loadData();
doSomeCalculations();
addTabPages();
main_tabcontrol.SelectedIndex = 2; //same issue if i pick any other tab here
}
private void Tabs_SelectedIndexChanged(object sender, EventArgs e)
{
UpdateDataInTab();
}
这会加载一些数据,进行一些计算,然后切换到标签页 2。我希望看到由 loadData() 和 doSomeCalculations() 函数处理的数据显示。相反,它显示默认值(几乎没有),直到我切换到另一个选项卡然后返回。这也验证了 Tabs_SelectedIndexChanged() 是否按预期工作。
我想了解为什么会发生这种情况以及如何使其按计划工作。
将 loadData() 和 doSomeCalculations() 作为异步任务运行并等待它们确实解决了这个问题,但它会带来很多其他问题,我想避免它(我不需要这个异步)。因为我的问题正好相反(我需要代码同步运行),所以这不应该是解决方案。
【问题讨论】:
-
您是否使用任何类型的数据绑定?
-
@letsdance:听起来你的方法已经异步了;对吗?
-
我没有使用数据绑定。这些方法不是异步的。
-
实际上我正在使用某种数据绑定,但我认为它不相关,因为我只是将它用作以编程方式填充 DGV 的不同方式:DataTable dt = new DataTable();填充_dt(); DataGridView dgv; dgv.DataSource = dt;在启动时,应用程序将数据从文件加载到变量(类),然后以编程方式将其添加到控件中。
标签: c# winforms user-interface