关闭表单后如何保存变量的值

时间:2014-05-04 21:52:00

标签: c# windows-forms-designer

在WindowsForms中,我有一个独立的类 Indicators.cs 和一个表单 Food 。在课堂上,我有一个变量,我在表单中进行了更改。

当我打开表单时,更改变量,关闭表单并再次打开它(不关闭程序),然后变量的值是旧的。为什么这样?

形式:

namespace WF
{
    public partial class Computer : Form
    {
        Indicators indicators = new Indicators();

        public Computer()
        {
            if (indicators.isComputerAlreadyRunning == false)
                indicators.isComputerAlreadyRunning = true;
        }
    }
}

Indicators.cs

namespace WF
{
    class Indicators
    {
        public Indicators()
        {

            this.isComputerAlreadyRunning = false;            
        }

        public bool isComputerAlreadyRunning;
    }
}

2 个答案:

答案 0 :(得分:1)

在表单类中创建一个显示表单并返回结果的方法。这类似于MessageBox.Show方法。在下面的示例中,FoodForm有一个名为ShowForm的方法。此方法返回一个名为FoodFormResult的自定义类,该类具有窗体关闭后所需的所有结果。

public FoodFormResult ShowForm()
    {
        return new FoodFormResult(
            ShowDialog() == DialogResult.OK, 
            _indicators);
    }

每次创建表单类(例如new FoodForm())时,表单中的所有现有值都将丢失。

答案 1 :(得分:1)

有很多方法可以做到这一点。你可以创建一个委托,保存到表单的资源,保存到外部文件,保存到设置/ Appconfig文件......所以...

另一个但不太建议出于安全原因选项是:您可以在应用程序的main方法中创建内部或公共静态变量。然后当您需要设置此变量时..

当你需要调用那个变量时:

//Your main method example
static class Program 
{
   internal static bool AreYouOKAY = false;
   // or public static bool as your needs

   static void Main ()
   { 
       ........
   }

/// And in your form

Program.AreYouOKAY = true;

// After your form closed.. from another form just call as above

if(Program.AreYouOKAY)
{
  MessageBox.Show (" Yeah! I'm Ok!");
}