【问题标题】:Binding Controls to a Settings File将控件绑定到设置文件
【发布时间】:2012-05-17 22:29:03
【问题描述】:

我希望能够独立控制多组设置。我最初使用的是 My.Settings,但是手动回滚一些设置同时保存其他设置的工作量太大。

我认为我的解决方案是使用多个设置文件,并且我曾经有过这似乎可行的时刻,但我所取得的任何成功都是周期性的和暂时的。

目前我在项目的根目录中有两个设置文件;在代码中,我可以正常访问设置,但在许多情况下,我想将单个设置绑定到控件。这应该直截了当,我记得当我使用单个内置设置文件时它可以工作。

但是,当我使用这两个新设置文件时,它不起作用。在 Formatting & Advanced Binding 对话框中,我选择 Add New Project Data Source,浏览到我的项目,然后进入根命名空间,然后我看到了我的表单/类/设置文件。当我选择这两个设置文件并单击“确定”时,对话框将关闭,而我无法选择将控件绑定到的单个设置。

当我启用 Project > Show All Files 时,我可以看到绑定已经创建;我在 My Project > Datasources 下有两个 .datasource 文件。

我不能绑定到这些设置文件有什么原因吗?如果没有,为什么我不能通过数据绑定对话框访问它们?

B 计划是创建一个对象作为控件和设置文件之间的中介,但如果可以的话,我宁愿避免这样做。

【问题讨论】:

    标签: vb.net data-binding settings


    【解决方案1】:

    我没有问题数据绑定到设置文件或自定义设置文件,我添加了一个名为“其他”的属性:

    Public Sub New()
      InitializeComponent()
    
      TextBox1.DataBindings.Add("Text", My.Settings, "Test")
      TextBox2.DataBindings.Add("Text", custom.Default, "other")
    End Sub
    

    我发现自定义设置文件的唯一“问题”是它不会像默认的My.Settings 那样自动写入设置文件。我将此添加到我的表单中:

    Protected Overrides Sub OnFormClosing(ByVal e As FormClosingEventArgs)
      custom.Default.Save()
    
      MyBase.OnFormClosing(e)
    End Sub
    

    然后设置仍然存在。

    【讨论】:

    • TBH,我没有尝试在代码中绑定 - 我只是假设不会工作,如果通过设计器绑定没有。然而它确实有效 - 它需要更多的输入,但它可以完成工作。
    • 另外,我认为它的行为与 My.Settings 相同。无论如何,您可以通过绑定声明来控制它:TextBox2.DataBindings.Add("Text", custom.Default, "other", False, DataSourceUpdateMode.OnPropertyChanged) - 但我想手动控制更改,所以我使用了 OnFormClosing 事件
    • @CJM 我玩过很多这样的设置,但下次我启动程序时无法保存custom.Default。因此,OnFormClosing() 保存调用以保持设置。在第一条评论中,我发现设计师的障碍多于它的帮助,所以我总是尝试在我对事物有更多“控制权”的代码中做事。
    • 您是否明确设置了更新模式?我认为它默认为 OnValidation。正如我所说,我不需要自动更新,但出于对您的礼貌,我尝试了它。对我来说,将更新模式设置为 OnPropertyChanged,DID 工作。
    • @CJM 没有区别。绑定在应用程序的生命周期内有效,但是当我重新启动程序时,初始变量不是我上次离开它的方式,除非我在该设置文件上调用 Save()
    猜你喜欢
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 2021-09-20
    • 2011-09-06
    • 2010-10-30
    相关资源
    最近更新 更多