所有循环崩溃winforms vb.net?
Posted
技术标签:
【中文标题】所有循环崩溃winforms vb.net?【英文标题】:ALL loops crashing winforms vb.net? 【发布时间】:2020-06-20 04:41:38 【问题描述】:我正在尝试制作一个小型 Winforms 游戏,似乎我的 while 循环(如下所示)正在阻止我前进。
While (battlevalue = False) 如果 (Player1Health当我的任何角色移动时,我的 .exe 文件崩溃,Visual Studio 调试器在这种情况下毫无用处,因为它没有检测到任何“问题”,而且似乎我不能没有 while 循环,因为如果我没有时间,玩家的攻击只会减去一次敌人的生命值。所以我尝试了一个直到循环。也没有运气。事实上,我所做的每一个循环都会使我的应用程序崩溃。我不能使用 if 语句,因为它们不是真正的循环,如果我根本不使用循环,我也会遇到同样的问题。
请提供您可能有的任何解决方案。
VB.NET 核心 4.7.2
Visual Studio 16.6.0 版
【问题讨论】:
您确实意识到那些End
语句在没有任何清理的情况下结束了当前进程,对吧? End
就像在任务管理器中右键单击一个进程并选择结束任务。你真的是想在那里使用Exit While
而不是End
?
无论如何,我猜你根本不应该有一个循环。用这么少的信息很难确定,但 WinForms 是事件驱动的,所以几乎可以肯定每次引发特定事件时都应该做某事,而不是在引发一次事件时重复。
【参考方案1】:
确实,正如 jmc 所评论的那样;你应该删除那些End
声明——它们肯定不是你想要做的。我假设您也希望停止处理此代码,因此您可能不想执行 (Glave.Location.Y = SwAxe.Location.Y)
位。避免这种情况的一种简单方法是使其成为 If Else 链的一部分
If (Player1Health <= 0) Then
MessageBox.Show("Player Two Won!")
'End
ElseIf (Player2Health <= 0) Then
MessageBox.Show("Player One Won!")
'End
Else If (Glave.Location.Y = SwAxe.Location.Y) Then
If (e.KeyCode = Keys.Q) Then
Player2Health = (Player2Health - Player1Attack)
MessageBox.Show(Player2Health)
End If
End If
End While
【讨论】:
也许他还需要return
或Exit While
才能联系到If (Glave.Location.Y = SwAxe.Location.Y) Then....
。以防万一。以上是关于所有循环崩溃winforms vb.net?的主要内容,如果未能解决你的问题,请参考以下文章
将 VB.NET 2.0 Winform 迁移到 3.5 WPF