首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在WinForm中的Visual C# .NET中,除非选择了tabPage1,否则tabPage1不会更新控件内容更改?

为什么在WinForm中的Visual C# .NET中,除非选择了tabPage1,否则tabPage1不会更新控件内容更改?
EN

Stack Overflow用户
提问于 2015-06-22 14:19:16
回答 2查看 472关注 0票数 1

因此,在Visual C# .NET的基本WinForm中,我有两个页面的tabControl1 : tabPage1和tabPage2。

假设我在tabPage1中有label1,以及一个计时器,它每10秒更新一次,并将label1更改为当前时间:

代码语言:javascript
复制
private void timer1_Tick(object sender, EventArgs e)
{
    button1.PerformClick();
}
private void button1_Click(object sender, EventArgs e)
{
     label1.Text = "Last updated: " + DateTime.Now.ToString() + "(local time)";
}

现在,如果我选择了tabPage1,那么即使我最小化了应用程序,label1.Text也会很好地更新。但是,如果选择了tabPage2,那么label1.Text永远不会更新,直到我选择包含该label1的tabPage1。

因为在我的应用程序中有多个选项卡,需要更新来自互联网的内容并填充标签和列表视图,所以我需要它能够更新选项卡上的内容,而不需要我进行选择。

如果用户使用的是不同的选项卡,我该如何去做,而不是以编程的方式强制用户选择选项卡来更新内容?

注意:我正在尝试避免这种包含性的解决方案(它确实有效,但对用户来说非常烦人):

代码语言:javascript
复制
private void timer1_Tick(object sender, EventArgs e)
{
    int x = tabControl1.SelectedIndex;
    if (tabControl1.SelectedIndex != 0)
    {
        tabControl1.SelectedIndex = 0;
        label1.Text = "Last updated: " + DateTime.Now.ToString() + "(local time)";
        tabControl1.SelectedIndex = x;
    }
}

tabPage1 :我试过tabPage1.Update(),但它不工作,仍然不更新时间,所以当我选择tabPage1.Update()后,它应该已经更新了几次,它显示与以前相同的时间。

Edit2:我遗漏了对这个问题至关重要的信息。在Button1.PerformClick()中,如果按钮被隐藏,PerformClick();将不起作用。因此,当我在tabPage2中时,它不能正确地单击按钮,因为按钮在tabPage1中是隐藏的。因此,解决方案是将按钮代码放入一个方法中,并使用计时器而不是PerformClick()来执行该方法,这样无论您是否在tabPage1中都能正常工作。

EN

回答 2

Stack Overflow用户

发布于 2015-06-22 14:35:19

除了进行更改的代码之外,还可以尝试调用tabPage1.Update()。也许它没有更新,因为它不可见。无论哪种方式,当用户更改到选项卡以查看其内容时,它可能会调用上面的方法并显示更新后的内容。因此,如果它在后台,就没有必要对其进行更新。我不能自己测试它,因为我不再有visual studio :(

票数 0
EN

Stack Overflow用户

发布于 2015-06-25 03:12:26

请看问题中的编辑,它不工作的原因是因为我使用了button.PerformClick()而不是普通的方法调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30973188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档