【发布时间】:2018-08-06 21:32:50
【问题描述】:
我正在尝试关闭每个打开的表单,只要它的名称与特定表单名称不匹配(某些表单应该保持打开状态),但它并没有像我认为的那样工作,我不知道为什么。
我使用 for each 循环和 Application.OpenForms 将表单存储在一个列表中(当我尝试粘贴此代码时,格式不起作用)。
然后我使用另一个 foreach 循环将列表中的表单名称与我想要保持打开的名称进行比较。当循环到达 frmMain 时,if 语句返回 true 并关闭表单,从而关闭应用程序。
如果我删除 if 语句的 OR 部分,则 if 语句变为: if(form.Name != frmMain) 那么它就可以正常工作了。
//Close all user dependant forms that might be open.
foreach (Form form in forms)
{
if(form.Name != "frmMain" || form.Name != "frmDice")
{
form.Close();
}
}
为什么代码不能在 if 语句中使用 OR?
【问题讨论】:
-
if 条件始终为真,我想你的意思是 &&。
-
因为你的测试总是会得到满足,它总是不会至少等于其中一个。也许您想使用 AND?
-
单步调试,检查locals会显示逻辑错误
标签: c# if-statement