首页 > 解决方案 > 离开和返回同一表单时,Visual Studio 数据绑定出现问题

问题描述

为了简单地做到这一点,我有两个表单,每个表单上有一个按钮可以在两个表单之间导航。然后在一个我有一个复选框和标签,当复选框被选中时,它通过在 form.load 事件中使用以下代码来显示标签:

Me.label1.DataBindings.Add("Visible", Me.checkbox1, "Checked")

问题是如果我要离开带有复选框和标签的表单并且未选中复选框,然后我回到带有复选框的表单并尝试检查它,标签不会显示任何建议或解决方案。

标签: vb.netwinforms

解决方案


  • 从表单加载中删除该行代码

  • 在设计器中打开您的表单,带有标签和复选框的表单

  • 单击复选框

  • 在 Properties 网格中展开 (PropertyBinding) 并打开 (none) 旁边的下拉菜单,单击底部的 New

在此处输入图像描述

  • 选择一个初始值,并为设置选择一个名称。如果您希望能够保存它并在下次程序打开时恢复它,请将其设为用户范围

在此处输入图像描述

  • 现在转到您的标签、属性,单击 (PropertyBinding) 旁边的 [...] 以查看所有可绑定属性的列表,滚动到可见并下拉选择相同的设置

在此处输入图像描述

  • 运行程序。

边注; 当我这样做时,我认为我可能遇到了数据绑定的错误/功能(我计划进行更多研究),因为只有当绑定时 bool 开始为 true(因此控件可见)时,行为才符合预期设置。如果控件是不可见的,它永远不会正确绑定以查看属性何时变为 true - 因此作为一种解决方法(在这种情况下我们正在绑定 Visible),在表单的构造函数中替换他对 InitializeComponent() 的调用:

        if (!Properties.Settings.Default.FormatWithoutConfirmation)
        {
            Properties.Settings.Default.FormatWithoutConfirmation = true;
            InitializeComponent();
            Properties.Settings.Default.FormatWithoutConfirmation = false;
        }
        else
            InitializeComponent();

推荐阅读