C# 为什么赢了';打印消息不是用我的C代码打印的吗?
我正在尝试在循环运行之前将消息“printing…”打印到txtMessage.Text文本框,但在循环运行之前,它从未打印到文本框。知道为什么吗C# 为什么赢了';打印消息不是用我的C代码打印的吗?,c#,for-loop,C#,For Loop,我正在尝试在循环运行之前将消息“printing…”打印到txtMessage.Text文本框,但在循环运行之前,它从未打印到文本框。知道为什么吗 else { txtMessage.Text = "Printing..."; for (int i = numberCopies; i != 0; i--) { int paper = Co
else
{
txtMessage.Text = "Printing...";
for (int i = numberCopies; i != 0; i--)
{
int paper = Convert.ToInt32(lblPaperAmount.Text);
paper--;
if (paper == 480 || paper == 380 || paper == 400 || paper == 200)
{
MessageBox.Show("There is a paper Jam! Please remove the Jam and then hit the ok button to continue!", "Important Message", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
lblPaperAmount.Text = Convert.ToString(Convert.ToInt32(lblPaperAmount.Text) - 1);
lblTonerAmount.Text = Convert.ToString(Convert.ToInt32(lblTonerAmount.Text) - 1);
Thread.Sleep(1000);
}
txtMessage.Text = "Job is completed!";
}
设置文本后,尝试添加刷新调用。有可能您进入循环的速度足够快,只有退出才能刷新
else
{
txtMessage.Text = "Printing...";
txtMessage.Refresh(); //force the control to redraw
for (int i = numberCopies; i != 0; i--)
{
int paper = Convert.ToInt32(lblPaperAmount.Text);
paper--;
if (paper == 480 || paper == 380 || paper == 400 || paper == 200)
{
MessageBox.Show("There is a paper Jam! Please remove the Jam and then hit the ok button to continue!", "Important Message", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
lblPaperAmount.Text = Convert.ToString(Convert.ToInt32(lblPaperAmount.Text) - 1);
lblTonerAmount.Text = Convert.ToString(Convert.ToInt32(lblTonerAmount.Text) - 1);
Thread.Sleep(1000);
}
txtMessage.Text = "Job is completed!";
}
您的代码在单个线程中运行。您应该将文本设置为“打印…”,然后旋转一个新线程来执行循环卡纸
请查看问题和前3个答案。Lol。您自己用“completed!”消息重写了它。@Jk要进一步扩展,无论您在哪里使用
txtMessage.Text=…
,您都应该将其更改为txtMessage.Text+=…
,除非您只想显示新的内容message@JK. 是的,它的罚款覆盖后,为loop@Rob即使我将其添加到if和else语句之前,它仍然不会在for循环之前打印。Winform不会及时更新UI线程-这就是为什么作业已完成的原因。不过,您会注意到,在“打印”时,您的UI仍然会被冻结。点击打印并尝试移动或调整窗体大小。