gpt4 book ai didi

c# - 当循环条件为日期时图形不绘制。 C#, 窗体

转载 作者:太空宇宙 更新时间:2023-11-03 20:41:15 25 4
gpt4 key购买 nike

所以我得到了这段代码。 (currPosX 定义较早)

while (earliestDate < DateTime.Today)
{
currPosX = currPosX + 5;
e.Graphics.DrawLine(Pens.Black, currPosX, 0, currPosX, 10);

earliestDate = earliestDate.AddDays(1);
}

图形不绘制。这真的很奇怪,因为只有当条件语句是日期比较时才会发生这种情况。我调试了,它确实进入了循环,并且值被弄乱了(例如 currPosX)。但是,没有显示。更奇怪的是,如果我在循环中添加一个 MessageBox.Show("blabla"),就会弹出消息框,并绘制图形。这是怎么回事?

编辑:提醒大家,当它是非日期时间条件时,它可以工作。这意味着这段代码有效。它确实显示了一系列线条

int i = 0;

while(i < 10)
{
currPosX = currPosX + 5;
e.Graphics.DrawLine(Pens.Black, currPosX, 0, currPosX, 10);
i++;
}

最佳答案

我做了一个简单的测试项目,它只有一个没有控件的表单(代码如下)。如您所见,我在构造函数中添加了一些代码来初始化最早的数据,以便 Paint 事件中的 while 循环将执行一次。还硬编码了 currPos 值。

如果您运行它,它将按预期绘制一条垂直线。但是如果你做了任何使图形无效的事情(例如,最小化和恢复窗体),它不会重绘图形。所以,它画了一次,24小时内不会再画了!

public partial class Form1 : Form
{
DateTime earliestDate;
public Form1()
{
earliestDate = DateTime.Now;
earliestDate = earliestDate.AddDays(-1);
InitializeComponent();
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
while (earliestDate < DateTime.Today)
{
float currPosX = 0;
currPosX = currPosX + 5;
e.Graphics.DrawLine(Pens.Black, currPosX, 0, currPosX + 5, 10);

earliestDate = earliestDate.AddDays(1);
}
}
}

关于c# - 当循环条件为日期时图形不绘制。 C#, 窗体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2550257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com