为什么这个文本框不会更新它的值? C#

时间:2015-03-01 03:29:49

标签: c# textbox messagebox

当我调用此函数时,我试图让一些文本框更新它们的值。我无法让他们更新他们的值,但是如果我使用我发送给他们的相同变量调用下面的消息框,他们会更新他们的值。

我不知道造成这种情况的原因。有什么想法吗?

private void updateCurrentCharacterInfoLabels()
    {
        ProgressBox.set(Crafter.MyCurrentInfo.CurrentProgress);
        MessageBox.Show(Crafter.MyCurrentInfo.CurrentProgress.ToString());
        ProgressBox.Invalidate();
        QualityBox.set(Crafter.MyCurrentInfo.CurrentQuality);
        MessageBox.Show(Crafter.MyCurrentInfo.CurrentQuality.ToString());
        QualityBox.Invalidate();
        DurabilityBox.set(Crafter.MyCurrentInfo.CurrentDurability);
        MessageBox.Show(Crafter.MyCurrentInfo.CurrentDurability.ToString());
        DurabilityBox.Invalidate();

当我注释掉MessageBox.Show()部分时,表单根本不更新文本框值。当我保留它们时,它会完美地更新。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

所以,我可以通过在每个上面调用.Refresh()来获取更新的框。我以为.Invalidate()做到了,但我猜不是。

调用messageBox.Show()必须导致表单刷新本身。我觉得奇怪的是,表格中的其他内容在整个过程中都在更新,但它从未重新绘制过这些框。是因为它们是自定义文本框吗?