代码之家  ›  专栏  ›  技术社区  ›  Justin Drury

将自定义可序列化对象绑定到控件,以便用户和加载/保存首选项

  •  0
  • Justin Drury  · 技术社区  · 17 年前

    好吧,所以我放弃了让内置的.NET配置系统为每个用户保存/加载自定义对象的数据,转而使用可序列化对象。为了更进一步,我想将它绑定到我的应用程序选项窗口中的控件。

    请原谅这个问题的长度,因为它包含一些代码块…

    首先,父对象:

    [Serializable]
    public class ConnectionSettings
    {
        public List<Connection> Connections { get; set; }
    
        public ConnectionSettings()
        {
            Connections = new List<Connection>();
        }
    }
    

    因为将保存多个连接,所以我认为这是存储它们的最简单方法。

    连接对象的块:

    [Serializable]
    public class Connection : NotifyBase
    {
        private string hostName;
        [DisplayName( "Host Name" )]
        public string HostName
        {
            get { return hostName; }
            set { SetField( ref hostName, value, "HostName" ); }
        }
    
        /* Other field snipped for your sanity,*/
        /* same format as host name */
    
        public List<string> Channels { get; set; }
    
        public Connection()
        {
            Channels = new List<string>();
        }
    }
    

    有关窗体外观的一般概念: 我有一个组合框,它将显示所有已保存连接的主机名,当用户选择主机名时,它将用各自的值填充表单上的其他字段。我意识到这不应该那么难,但出于某种原因,我不能让组合框部分工作,而且我越想它,我不确定我是否知道用哪个特定连接来填充其他控件…

    更多信息 问题是,我不知道如何绑定所有需要绑定的内容。我要离开这个 example . 我希望能够为反序列化连接设置(来自文件)中的每个连接对象在组合框中显示主机名,当您选择主机名时,它会将其余相关数据填充到表单上的其他控件中。

    任何帮助我都将不胜感激。

    1 回复  |  直到 17 年前
        1
  •  0
  •   Justin Drury    17 年前

    好吧,我想我已经弄明白了。我将connectionsettings更改为inherit list,它似乎工作正常。