繁体   English   中英

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

[英]holding the value of a variable in c#.net winforms

我有一个具有按钮的表单,在按钮单击事件上,变量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,则应禁用其上的按钮。

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

当单击按钮时,我会有一个Controller或Presenter对象侦听表单中的事件。 此Controller对象维护计数器,负责在构造期间创建和销毁表单并设置初始值,例如是否禁用按钮。 表单可以尽可能愚蠢,而不必担心这样的业务逻辑。

模型-视图-控制器

模型-视图-演示

一些讨论和例子

通过使变量static

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

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

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

你可以使用设置类。 一个很好的例子可以在这里找到 - http://www.codeproject.com/Articles/17659/How-To-Use-the-Settings-Class-in-C

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM