1

我目前正在寻找一种更好的方法来记住/保留 .NET Windows 窗体上控件的先前状态。

例如,Windows 窗体上有 5 个下拉列表菜单控件。并且用户之前在这些下拉菜单中选择了一些项目。我想在这里做的是:当再次加载这个 WinForm 时,用户之前的选择将被恢复并保持不变。

现在,我可以想到一个解决方案:将每个选定的值/索引存储在文本文件或注册表项或其他东西中。然后在每次加载 From 时读取它们。

但问题是这种方法在处理大量控件和维护它们的状态时会变得低效。

那么有人可以给我一些想法或建议吗?实现它的最佳方法是什么?

编辑:

我刚刚在 MSDN 上阅读了这篇文章,这让我很担心,因为我目前正在做插件项目:

您不能在托管 .NET Framework 的非托管应用程序中使用应用程序设置。设置在 Visual Studio 加载项、Microsoft Office 的 C++、Internet Explorer 中的控件托管或 Microsoft Outlook 加载项和项目等环境中不起作用。

4

3 回答 3

7

您可能想查看设置文件

保存用户设置

private void UserSettingsDemo_Load(object sender, EventArgs e)
    {
        txtServer.Text = Settings.Default.ServerNameSetting;
        txtDatabase.Text = Settings.Default.DBNameSetting;
        txtPassword.Text = Settings.Default.PasswordSetting;
        txtUserId.Text = Settings.Default.UserIdSetting;
    }

    private void UserSettingsDemo_FormClosing(object sender, FormClosingEventArgs e)
    {
        Settings.Default.DBNameSetting = txtDatabase.Text;
        Settings.Default.UserIdSetting = txtUserId.Text;
        Settings.Default.PasswordSetting = txtPassword.Text;
        Settings.Default.ServerNameSetting = txtServer.Text;
        Settings.Default.Save();

    }
于 2012-05-30T07:05:53.757 回答
2

您是说在重新启动应用程序后保持控件的先前状态吗?在这种情况下,您可能别无选择,只能将所有更改写入配置文件中。

如果您尝试在不同的 winform 之间导航并希望保留更改,则可以实现控件的历史记录。像堆栈这样的数据结构应该可以解决问题,使用以下方法:

AddToHistory(控制控件)

RetrieveLastOpen()

于 2012-05-30T07:12:01.007 回答
1

据您所知,您到底想保存什么,可以使用 smth like

(foreach var child in MainForm.Children.OfType<ComboBox>)
{
    // Save properties of child into Dictionary<string, ComboBoxProperties>
}

并且为了加载你会这样做

(foreach var child in MainForm.Children.OfType<ComboBox>)
{
    // Load properties of child from dictionary[child.Name]
}
于 2012-05-30T08:34:25.390 回答