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

用户控件Data Binding属性设置无法保存的技术求助

用户控件中数据绑定属性无法保存的问题

问题描述

  • 用户控件包含一个查找对象
  • 当前属性实现代码:
[Bindable(true)]
public CalcEdit ToplamMiktari
{
    get { return this.TxtToplamMiktari; }
    set { this.TxtToplamMiktari = value; }
}
  • 在窗体中使用该用户控件时,将数据库返回的数据字段绑定到控件的Databindings属性
  • 保存并关闭窗体后重新打开,之前设置的绑定完全丢失

解决方案

1. 暴露控件值而非控件实例

当前属性直接返回CalcEdit控件对象,设计器无法序列化控件引用的绑定设置。应改为暴露控件的值属性(比如数值类型的Value或文本类型的Text):

// 若为数值类型
[Bindable(true)]
public decimal ToplamMiktari
{
    get { return this.TxtToplamMiktari.Value; }
    set { this.TxtToplamMiktari.Value = value; }
}

// 若为文本类型
[Bindable(true)]
public string ToplamMiktari
{
    get { return this.TxtToplamMiktari.Text; }
    set { this.TxtToplamMiktari.Text = value; }
}

2. 添加设计器序列化特性

通过DesignerSerializationVisibility特性明确告诉设计器序列化属性值,需引用System.ComponentModel命名空间:

[Bindable(true)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
public decimal ToplamMiktari
{
    get { return this.TxtToplamMiktari.Value; }
    set { this.TxtToplamMiktari.Value = value; }
}

3. 检查绑定设置的目标属性

在窗体设计器中绑定数据时,确保选择的是你定义的ToplamMiktari属性,而非用户控件内部的TxtToplamMiktari控件属性。

4. 验证设计器生成代码

关闭设计器后查看窗体的.Designer.cs文件,确认是否生成了针对ToplamMiktari属性的绑定代码,示例如下:

this.yourUserControl1.DataBindings.Add(new System.Windows.Forms.Binding("ToplamMiktari", this.yourBindingSource, "DatabaseFieldName", true));

若未生成此类代码,需回到前两步调整属性设计。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 19:28:16