【问题标题】:button can toggle boolean in C#按钮可以在 C# 中切换布尔值
【发布时间】:2021-08-02 04:05:12
【问题描述】:

尝试在 asp.net 和 C# 中制作按钮,将其文本从“显示编辑”更改为“隐藏编辑”,将来它将执行更多代码,例如使文本框可见和不可见,因此我不能使用短if 语句。 首先,它尝试将布尔值设置为类似于 switch,但没有成功。

if(isEditing)
{
    Button1.Text = "Show Edit";
    isEditing = false;
}
if(!isEditing)
{
    isEditing = true;
    Button1.Text = "Hide Edit";
}

这是按钮方法内的代码,“isEditing”布尔值在上面的 C# 类中减速并使用默认值初始化。 由于某种原因它不起作用,它只是切换一次并且不会改变。

【问题讨论】:

  • 您是否在践踏Page_Load 中的重要内容,例如将isEditing 重新初始化为默认值或类似的内容?检查您是否正确检查了Page.IsPostBack 条件。
  • 第二个if 一如既往地看到isEditing false,因为您在第一个if 中将它设置为false,如果它还不是false。因此isEditing 将始终设置为true
  • @OlivierJacot-Descombes Ha 起初并没有看到这一点。这看起来确实像这里的问题。
  • @OlivierJacot-Descombes 默认值为 false,因此在第一次运行时,第二个 if 将完成其工作并将值反转为 true,因此在下一次运行中,第一个 if 将运行,并且再次反转值。
  • @TharwatMella:是的,但是在第一个 if 之后,第二个运行,撤消第一个所做的。它总是运行,因为您错过了 else 关键字。如果没有else 关键字,这两个if 只是两个独立的语句,按顺序执行。顺便说一句,如果您使用 else 部分,第二个是多余的(请参阅@TimSchmelter 的回答)。

标签: c# asp.net button webforms boolean


【解决方案1】:

我猜你想使用 else if 或简单地使用 else 而不是第二个 ìf ,您可以立即将 isEditing 更改为 true

if(isEditing)
{
    Button1.Text = "Show Edit";
    isEditing = false;
}
else
{
    isEditing = true;
    Button1.Text = "Hide Edit";
}

你也可以使用:

Button1.Text = isEditing ? "Show Edit" : "Hide Edit";
isEditing = !isEditing;

【讨论】:

  • 实际上所有这些方式都导致相同的结果,即使按钮仅工作一次,并且布尔值为true。我将一个假值设置为默认值,并在第一个按钮按下时将其放入类块中,它应该采用第二个 IF 语句,布尔值将为真,在第二个按钮按下时,它应该采用第一个 IF,并且该值将再次反转,所以在。但由于某种原因它不起作用
猜你喜欢
  • 2018-05-16
  • 1970-01-01
  • 1970-01-01
  • 2015-10-02
  • 2012-02-25
  • 2017-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多