当我调用此函数时,我试图让一些文本框更新它们的值。我无法让他们更新他们的值,但是如果我使用我发送给他们的相同变量调用下面的消息框,他们会更新他们的值。
我不知道造成这种情况的原因。有什么想法吗?
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()部分时,表单根本不更新文本框值。当我保留它们时,它会完美地更新。任何帮助表示赞赏。
答案 0 :(得分:0)
所以,我可以通过在每个上面调用.Refresh()来获取更新的框。我以为.Invalidate()做到了,但我猜不是。
调用messageBox.Show()必须导致表单刷新本身。我觉得奇怪的是,表格中的其他内容在整个过程中都在更新,但它从未重新绘制过这些框。是因为它们是自定义文本框吗?