C# VS : How to make the changes constant every time the form is loaded

标签 c# arrays visual-studio constants

我正在使用 Visual Studio C# 制作一个简单的程序

该程序是关于车库预订系统的。 在预订表格中,用户将从下拉列表中选择一个级别,然后将根据他的要求显示 10 个标签。用户将点击他需要的位置(标签上现在有汽车图像 - 意味着位置已保留 - )然后取票。

我的问题是,当用户返回主页并返回预订表格,并再次选择他之前选择的相同级别时。标签将显示为干净和空的,因为之前没有人预订过。

我的问题是,让标签图像和文本发生变化并且在每次加载表单时都不会恢复到默认值的最佳方法是什么?

我声明了两个标签数组,实际上我添加了20个不可见标签。

public partial class Form3 : Form
{

      Label[] level1 = new Label[10];
     Label[] level2 = new Label[10];

然后我在构造函数中分配了标签:

public Form3()
    {

        InitializeComponent();
        label4.Click += new EventHandler(SpotChosen);
        label5.Click += new EventHandler(SpotChosen);
        label6.Click += new EventHandler(SpotChosen);
        label7.Click += new EventHandler(SpotChosen);
        label8.Click += new EventHandler(SpotChosen);
        label9.Click += new EventHandler(SpotChosen);
        label10.Click += new EventHandler(SpotChosen);
        label11.Click += new EventHandler(SpotChosen);
        label12.Click += new EventHandler(SpotChosen);
        label13.Click += new EventHandler(SpotChosen);

        label14.Click += new EventHandler(SpotChosen);
        label15.Click += new EventHandler(SpotChosen);
        label16.Click += new EventHandler(SpotChosen);
        label17.Click += new EventHandler(SpotChosen);
        label18.Click += new EventHandler(SpotChosen);
        label19.Click += new EventHandler(SpotChosen);
        label20.Click += new EventHandler(SpotChosen);
        label21.Click += new EventHandler(SpotChosen);
        label22.Click += new EventHandler(SpotChosen);
        label23.Click += new EventHandler(SpotChosen);

        level1[0] = label4;
        level1[1] = label5;
        level1[2] = label6;
        level1[3] = label7;
        level1[4] = label8;
        level1[5] = label9;
        level1[6] = label10;
        level1[7] = label11;
        level1[8] = label12;
        level1[9] = label13;

        level2[0] = label14;
        level2[1] = label15;
        level2[2] = label16;
        level2[3] = label17;
        level2[4] = label18;
        level2[5] = label19;
        level2[6] = label20;
        level2[7] = label21;
        level2[8] = label22;
        level2[9] = label23;


    }

最佳答案

每次加载表单时,标签都会重新呈现,并且它们会采用您为其设置的默认值。

有许多方法可以让您保留所拥有的控件的最后状态。 基本上,当预订表格关闭时,您需要在内存中存储标签状态的标志。 这可以在 Form_unload 事件上完成,您可以使用的一种技术是将它们保存在静态字典中,其中字符串键可以是标签 ID,而 SomeFlagType 是您用来标记此“Spot is reserved”的某种类型,如果我没有误会你的话。因此,您的值可以是一个 bool 标志,甚至可以是您存储在您想要保留的控件中的一个值。

在 Form_Load 事件中,您可以通过标签的 ID“查询”字典并返回标志或值并将其应用于标签。

如果是多用户的client-server环境,你想把你的静态字典存储在server端,供大家查询,方法会稍微不同。

关于C# VS : How to make the changes constant every time the form is loaded,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13761893/

相关文章:

c# - 为什么构造函数中的空字符串参数不会引发异常?

javascript - 合并一个属性相同的对象数组,同时将另一个属性的唯一值传输到数组中

c# - 在 Java 和 C# 中计算 SHA-1 哈希

javascript - 使用 querySelectorAll 后无法将元素推送到数组

ios - 从数组返回的属性创建常量

visual-studio - 找不到 v120 的构建工具(平台工具集 = 'v120' )

visual-studio - 正确使用 VS_DEBUGGER_WORKING_DIRECTORY 等

c# - Visual Studio - 无法将 MySql 数据库表链接到数据集

c# - 是否可以从第 3 方应用程序执行对 Azure App Insight 的查询

c# - 同一线程可以在 Azure Functions 中同时运行多个函数吗?