在c#.net winforms中保存变量的值

在c#.net winforms中保存变量的值,c#,.net,winforms,global-variables,retain,C#,.net,Winforms,Global Variables,Retain,我有一个表单,它有一个按钮,在按钮点击事件中,一个变量locklogin增加了1 当locklogin=3时,表单按钮被禁用,表单需要关闭。 关闭表单时,locklogin将丢失其值 但是我想保持它的值,尽管表单正在关闭,并且当表单再次运行(整个应用程序再次执行)时,按钮仍然被禁用。我该怎么做 public partial class Form1 : Form { static int loginlocked; static int isloginlocked; pub

我有一个表单,它有一个按钮,在按钮点击事件中,一个变量locklogin增加了1

当locklogin=3时,表单按钮被禁用,表单需要关闭。 关闭表单时,locklogin将丢失其值

但是我想保持它的值,尽管表单正在关闭,并且当表单再次运行(整个应用程序再次执行)时,按钮仍然被禁用。我该怎么做

 public partial class Form1 : Form
{
    static int loginlocked;
    static int isloginlocked;
    public Form1()
    {
        InitializeComponent();

        if (isloginlocked == 3)
        {
            foreach (Control c in this.Controls)
            { c.Enabled = false; }

        }
    }

    private void button1_Click(object sender, EventArgs e)
    {
        loginlocked++;
        if (loginlocked == 3)
        {
            foreach (Control c in this.Controls)
            { c.Enabled = false; }

            this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);

        }
    }
    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        isloginlocked = loginlocked;
        if (e.CloseReason == CloseReason.UserClosing)
        {

            if (MessageBox.Show(this, "Really?", "Closing...",
                 MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
                == DialogResult.Cancel) e.Cancel = true;
        }
    }
}

我希望在打开表单/应用程序时,首先检查变量的值是否为=3,如果为3,则应禁用其上的按钮。

通过使变量
为静态


当然,由于您暗示新表单将在程序中多次创建,因此必须在构造函数中设置按钮的启用状态(在
InitializeComponent
之后)。

如果在表单关闭时应用程序关闭,则可以将变量保存到平面文件或xml文件中。
或者,如果关闭表单时应用程序仍在运行,请在表单以外的其他位置声明变量

我会开始考虑将逻辑与UI分离。实现这一点有多种方法,我已经包括了一些开始的链接

单击按钮时,我会让一个控制器或演示者对象侦听来自表单的事件。此控制器对象维护计数器,并负责创建和销毁窗体,并在构造期间设置初始值,例如按钮是否被禁用。表单可以尽可能地愚蠢,不必担心这样的业务逻辑


创建一个静态变量或一个简单的带计数器的单例类。不要重置该值,而是使用Mod运算符使locklogin%3==0,关闭表单。锁登录值可以不断增加而不会丢失值。您将需要在第一次使用变量时处理它(例如locklogin!=0)

u可以使用设置类。这里有一个很好的例子-

static关键字可能对您很有用。当应用程序重新启动时,“再次运行表单”是什么意思?当表单的新实例在同一个进程中创建时?是的,应用程序再次运行。我已经查看了您的代码,看起来很好,但是,是这段代码,还是有其他东西在运行表单?@Josefvz:先生,仅此而已。但不起作用。当我关闭应用程序并再次运行它时,isloginlocked的值将丢失,但我想知道,如果上次关闭应用程序时是3,那么这次按钮将被禁用。先生,请查看我正在使用的代码。我已经编辑了我的帖子,先生,请看一下我正在使用的代码。我已经编辑了我的帖子