You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VB Windows Forms UserControl子控件属性如何接入ApplicationSettings?

VB WinForms 用户控件绑定ApplicationSettings的问题解决

问题原因

默认情况下,自定义用户控件的属性不会自动出现在Application Settings的绑定列表中,需要通过特定的属性特性标记告诉设计器该属性支持设置绑定。你当前使用的DesignerSerializationVisibility.Content特性用于标记嵌套控件/复杂对象的序列化,不适合简单字符串属性,导致设计器无法识别该属性可用于设置绑定。

解决方案:修改属性特性

调整自定义属性的特性标记,让设计器识别它支持Application Settings绑定:

Imports System.ComponentModel

Public Class UserControl1
    ' 标记属性可浏览、支持设置绑定、序列化可见
    <Browsable(True)>
    <SettingsBindable(True)>
    <DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)>
    Public Property UserControlText() As String
        Get
            Return TextBox1.Text
        End Get
        Set(value As String)
            TextBox1.Text = value
        End Set
    End Property
End Class

各特性的作用:

  • Browsable(True):确保属性在设计器的属性面板中可见
  • SettingsBindable(True):明确标记该属性支持Application Settings绑定
  • DesignerSerializationVisibility.Visible:告诉设计器序列化该属性的直接值,而非嵌套内容

设计器中绑定设置

修改代码后重新生成项目,在窗体设计器中操作:

  • 选中你的UserControl1实例
  • 在属性面板找到UserControlText属性,点击右侧下拉箭头
  • 选择「Application Settings」→「Bindings」→「新建」
  • 在弹出窗口中选择已有设置项,或创建新设置项完成绑定

手动代码绑定(备选方案)

如果不想通过设计器绑定,也可以用代码实现:

  1. 在My.Settings中创建字符串类型的设置项(比如命名为UserControlTextSetting)
  2. 在窗体的Load事件中赋值:
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    UserControl11.UserControlText = My.Settings.UserControlTextSetting
End Sub
  1. 在窗体关闭或需要保存设置时,同步值并保存:
Private Sub Form1_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
    My.Settings.UserControlTextSetting = UserControl11.UserControlText
    My.Settings.Save()
End Sub

内容的提问来源于stack exchange,提问作者spinjector

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 14:34:54