Bool值不变

时间:2017-03-06 18:15:43

标签: c#

我有这个简单的代码......

Public class Form1 : Form {

   //bool value = false;
   bool value;

   public Form1()
   {
        InitializeComponent();
   }

   private void Form1_Load(object sender, EventArgs e) {
           if (value) {
             MessageBox.Show("ValueChanged");
           }
   }

   private void btn_Click (Object sender, EventArgs e) { 
           value = true;
           MessageBox.Show("btnClicked");
   }
}

MessageBox显示何时触发btn_Click,但不是在Form1_Load事件中?

我还尝试将if(value)语句放在Form1构造函数中(在InitializeComponent方法之后),但bool保持不变。有什么建议吗?

编辑: 但是,如果它没有“重置”数据呢?

2 个答案:

答案 0 :(得分:0)

表单构造函数和Form_Load代码在按钮单击事件处理程序将变量设置为true之前运行。如果您关闭表单并创建它的新实例,该实例将拥有自己的字段,该字段最初也是false。因此,if语句中的代码将永远不会被执行。

答案 1 :(得分:0)

简单地写一个if语句不会“监视”一个更改的值 - 它只是在你告诉它时运行。

以下事件处理程序

private void Form1_Load(object sender, EventArgs e) {
       if (value) {
         MessageBox.Show("ValueChanged");
       }
}

在表单加载时仅运行 。由于value已更改,因此绝对没有理由再次运行它。请注意,这并不意味着value没有变化。

您可能希望阅读C# events,这是Observer Pattern的实现。您可能也对INotifyPropertyChanged interface感兴趣。