WinForm数据绑定--BindingContext

BindingContext用法示例源码 该源码很好的演示了BindingContext及与控件属性简单绑定相关的用法,值得看一下。。。 立即下载

     Binding对象:代表某对象属性值和某控件属性值之间的简单绑定。其主要负责将控件的属性和对象的属性进行关联。

 

     BindingManagerBase:管理绑定到相同数据源和数据成员的所有 Binding 对象。 这个对象在前面的章节中没有涉及,但实际上不管是简单绑定还是复杂绑定中都使用到了这个对象的相应的派生类。

 

     BindingContext对象:  负责管理从Control类继承的任意对象的 BindingManagerBase对象集合只要发生数据绑定,那在一个FORM中就一定存在一个BindingContext对象。我们可以通过Form对象BindingContext属性获得一个BindingContext对象。

 

     这三个对象掌管着数据绑定的主要功能。我们先来看看其关系:

          1. Binding对象负责将控件的属性和对象的属性关联起来。对象的属性值会被自动传递个控件的属性,而控件的属性值更改后也会直接传回对象的属性(双向绑定)。

          2. 在一个WinForm界面中总是会存在多个控件。所以,一般都会有一组Binding对象来管理不同控件中的属性和相同数据源中属性的关联关系。为了能方便的管理这样的一组Binding对象,我们使用继承至BindingManagerBase的子对象进行管理工作。BindingManagerBase有两个子类:PropertyManager和CurrencyManager.

              其中:PropertyManager : 维护对象的属性与数据绑定控件属性之间的 Binding。(见简单绑定的描述)

                      CurrencyManager : 管理 Binding 对象的列表。管理列表或集合类型的数据源对象。(见复杂绑定的描述)

     无论是PropertyManager还是CurrencyManager总是和一个数据源对象的对应的。也就是说,一个特定的数据源对象(无论是单一对象还是集合类对象)都会有一个对应的BindingManagerBase的子对象。

          3.对同一窗体而言,通常都会面对多个数据源而不是一个。所以,也就会产生多个PropertyManager或CurrencyManager对象。BindingContext就主要负责管理多个BindingManagerBase的子对象。BindingContext可以通过窗体的BindingContext属性获得。它是一个字典的集合。

     为了更好的说明这三类对象之间的关系,请查看下图。

          

          

      上面图例表明了一下几件事情:

          1.当你的窗体中绑定了3个不同的数据源,数据绑定机制就会自动产生三个对应的BindingManagerBase的子对象与数据源对象对应。其实更为准确的说法是,如果你的窗体绑定了三个不同的对象,那么就会产生三个独立的BindingManagerBase的子对象与其对应。至于是产生PropertyManager还是CurrencyManager就要取决与你绑定的数据源是单一对象还是列表(集合)对象了。上图说明了这一个点,如果是绑定的是单一对象就会产生PorpertyManager,而如果是列表(集合)对象就会产生一个CurrencyManager。      

    2. PropertyManager主要管理一组相关的Binding对象,而CurrencyManager主要管理着相应的对象集合(列表对象)。两个对象管理的侧重点不同,一个主要管理数据绑定的基础对象Binding,而一个主要管理数据绑定的后端数据源对象集合。

     比如CurrencyManager可以每次从集合对象中猎取一个对象然后将其绑定的到窗体控件中去,它也可以在集合对象中进行导航。或也可以新增新的对象集合中,等等。

     3.因为对于同一窗体而言,可能绑定到多个数据源也就会产生多个“管理者”,而每一个数据源都会对应一个独立的“管理者”。所以我们可以通过窗体的BindingContext对象获得某个特定数据源对应的“管理者”。

 

     比如:窗体中的数据源是HumanList(集合),那么当窗体和这个集合发生绑定后,我们就可以通过一下的方式获得一个CurrencyManager对象。

 

 

Code

其注意以上的第9行的语句this.BindingContext[list]。其中窗体有一个BindingContext属性,它在发生数据绑定后会自动维持一个key/value的集合,这个集合是一数据源对象作为KEY的,我们可以通过指定特定的数据源对象找到相应的“管理者”。注意前面我已经说过对于每个数据源而言都会有一个对应的“管理者”。上面的代码中应为数据源是集合类型所以会产生一个CurrencyManager对象。

 

     现在可以做个小结:BindingContext类维持一组可能BindingManagerBase对象,而这些BindingManagerBase对象和数据源对象又是一一对应的。

 

 


     复杂的讲解到此,下面我就做一个实际的例子来体会一下上面的描述。

 

     1.首先:我们创建一个自定义的对象:Person类

     

 

 

using  System;
using  System.Collections.Generic;
using  System.Text;

namespace  AppBindingContext
{
    
public   class  Person
    {
        
private   string  _lastName;

        
public   string  LastName
        {
            
get  {  return  _lastName; }
            
set  { _lastName  =  value; }
        }
        
private   string  _firstName;


        
public   string  FirstName
        {
            
get  {  return  _firstName; }
            
set  { _firstName  =  value; }
        }
        
private   int  _age;

        
public   int  Age
        {
            
get  {  return  _age; }
            
set  { _age  =  value; }
        }
        
public  Person() { }
        
public  Person( string  lastName,  string  firstName,  int  age)
        {
            
this .LastName  =  lastName;
            
this .FirstName  =  firstName;
            
this .Age  =  age;
        }
    }
}

     

     2. 我们建立一个Winform界面,然后使用List<T>作为集合来保存多个Person对象。

 

 

Code

 

 代码下载

 

     

    先下载上面的代码看看,体会一下CurrencyManager的作用.你也可以看看CurrencyManager的其他的方法和属性,其实大致就可以明白这个对象是做什么用.

它公布出来的很多方法其实都是用于操作集合用的.然而这种"操作"是依赖数据绑定完成的,而不是单纯的为了操作集合而操作.

 

转自:http://www.cnblogs.com/travelcai/archive/2008/08/27/1227102.html

winfrom中数据绑定资料 WinForm数据绑定-实现IList接口, 理解数据绑定机制的用意。为了认识数据绑定,需要从最简单的开始,在继续讨论数据绑定中不可忽视的一个对象Binding对象的作用, 这一章讲解如何进行复杂绑定。绑定到集合类型的数据。WinForm数据绑定--BindingContext 立即下载

相关推荐

C#应用BindingSource实现数据同步的方法

主要介绍了C#应用BindingSource实现数据同步的方法,需要的朋友可以参考下

C#学习笔记--BindingContext()

[C#]public: BindingContext();备注当希望有同一数据源的多个 BindingManagerBase 实例时,请创建一个新的 BindingContext,并将它设置为从 Control 继承的对象的 BindingContext 属性。例如,如果您有两个 BindingManagerBase 对象(来自两个不同的 BindingContext 对象),可以将每

服务大众 6192

VirtualBox安装Win10虚拟机超详细教程(附微软官方镜像下载)

本文提供了一份详细的VirtualBox安装Win10虚拟机教程,涵盖从环境准备、工具下载到系统安装与初始配置的全过程。特别推荐使用微软官方镜像下载,确保系统纯净安全。此外,还分享了性能优化技巧和常见问题解决方案,帮助用户高效搭建稳定的Windows测试环境。

weixin_29243279的博客 920

vb2010(27)BindingContext和CurrencyManager

BindingContext 类 https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.forms.bindingcontext?view=netframework-4.8 CurrencyManager 类 https://docs.microsoft.com/zh-cn/dotnet/api/system.windows.f...

复行数十步 478

智能汽车竞赛摄像头处理(4)——摄像头循迹思路讲解

智能汽车竞赛摄像头处理(4)对摄像头循迹思路进行讲解。

weixin_62261692的博客 7059

window下迁移SVN仓库到新的windows服务器

window下迁移SVN仓库到新的windows服务器

Bertram的博客 4692

[转]WinForm数据绑定--BindingContext

C# WinForm 数据绑定

Alfred's special column 380

图片风格自动分析模型

对于分类任务,我们可以使用交叉熵损失作为损失函数。同时,我们可以选择随机梯度下降(SGD)或Adam等优化器进行模型优化。# 使用SGD优化器# 或使用Adam优化器在这部分,总结整个项目的过程,包括数据准备、模型构建、训练、优化和评估等。同时,讨论可能的改进方向和未来工作,例如尝试更多的模型结构、优化技巧等。

a871923942的博客 1699

WinForm数据绑定--BindingContext(转)

WinForm数据绑定--BindingContext(转) 原链接:http://www.cnblogs.com/travelcai/archive/2008/08/27/1227102.html 前面章节中,对简单绑定和复杂绑定做了简单的描述。在这章中,我们将所有的这些东西串在一起看看数据绑定的全貌。 Binding对象:代表某对象属性值和某控件属性...

weixin_30493321的博客 112

S7-1200PLC 2轴直线插补详细算法(完整源代码)

速度轴V90PN总线伺服梯形加减速速度控制(标准报文1应用)_v90伺服加减速时间怎么调整-优快云博客文章浏览阅读288次。

RXXW_Dor的博客 4259

嵌入式工程师成长之路(7)——算法学习

算法大全1、风仲达——算法笔记2、坐在马桶上学算法3、啊哈算法4、深度强化学习实验室。

云轩阁 4万+

绑定机制(BindingContext)

WinForm数据绑定--BindingContext      前面章节中,对简单绑定和复杂绑定做了简单的描述。在这章中,我们将所有的这些东西串在一起看看数据绑定的全貌。        Binding对象:代表某对象属性值和某控件属性值之间的简单绑定。其主要负责将控件的属性和对象的属性进行关联。        BindingManagerBase:管理绑定到

gsd1985的专栏 1490

YOLO11改进 - 卷积Conv | StripBlockStripBlock大条带卷积块,通过顺序条带卷积捕获方向性长程依赖,强化高长宽比目标特征提取 | AAAI 2026

本文介绍了面向高纵横比目标检测的条带卷积模块——StripBlock,适用于遥感、船只、车道等细长结构目标的特征增强。该方法先通过 `5×5` 深度卷积提取局部空间信息,再利用 `1×19` 与 `19×1` 的正交长条卷积分别建模横向和纵向长程依赖,最后通过 `1×1` 卷积生成空间注意力权重,并以逐元素门控方式重标定输入特征。我们将 StripBlock 成功集成进 YOLO11,在检测头的多尺度特征层中引入条带式空间建模能力,从而增强模型对细长目标和复杂遥感场景的定位与识别效果。

魔改工程师的博客 234

Binding,BindingManagerBase, BindingContext的用法

Binding对象:代表某对象属性值和某控件属性值之间的简单绑定。其主要负责将控件的属性和对象的属性进行关联。 BindingManagerBase:管理绑定到相同数据源和数据成员的所有 Binding 对象。这个对象在前面的章节中没有涉及,但实际上不管是简单绑定还是复杂绑定中都使用到了这个对象的相应的派生类。 BindingContext对象: 负责管理从Control类继承的任

r798303142b的专栏 862

【GameFramework框架内置模块】10、本地化(Localization)

本地化(Localization),也就是我们所说的不同地区的语言适配,比如说中文版“你好”,英文版是“Hello”。GameFramework在本地化方面,不仅支持文本的本地化,还支持任意资源的本地化,比如说游戏中释放烟花的特效也可以做出不同地区的版本,使得中文版烟花里面的“新年好”字样的特效,在英文版里面是“Happy New Year”字样的特效。

优快云博客专家,Unity3D高级软件工程师,《Unity 3D从入门到实战》作者。 2304

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

WinForm:对TextBox数据绑定的浏览

privateDataTabledtStore;privateSystem.Windows.Forms.TextBoxtxtID;privateSystem.Windows.Forms.TextBoxtxtName;privateSystem.Windows.Forms.BindingManagerBaseB...

HEDY9792的博客 236

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

什么是数据绑定

什么是数据绑定(译) 此篇译文是针对.NET 2.0中的WinForm数据绑定 从一个Windows窗体的角度来看,“数据绑定”是一种把数据绑定到一种用户界面元素(控件)的通用机制。在Windows窗体中有两种数据绑定类型:简单绑定和复杂绑定。 简单绑定 简单绑定是将一个用户界面元素(控件)的属性绑定到一个类型(对象)实例上的某个属性的方法。例如,如果一个开发者有一个Cust...

weixin_30457551的博客 151

什么是数据绑定(译)

此篇译文是针对.NET 2.0中的WinForm数据绑定从一个Windows窗体的角度来看,“数据绑定”是一种把数据绑定到一种用户界面元素(控件)的通用机制。在Windows窗体中有两种数据绑定类型:简单绑定和复杂绑定。 简单绑定 简单绑定是将一个用户界面元素(控件)的属性绑定到一个类型(对象)实例上的某个属性的方法。例如,如果一个开发者有一个Customer类型的实例,那么他就可以把Cust...

weixin_30906671的博客 104

.net数据绑定问题

最近在使用Ado.net Entity Framework和Linq to entities时遇到大量的winform实体数据绑定问题,部分暂时还未能解决,现暂时记录于此,逐步解决。 1.匿名类型不能绑定 现在怀疑匿名类型的属性全部是以字段形式保存在内存中的,而winform空间是不支持字段绑定的,所有的Datamember必须是属性类型。因此,以下代码中被注释的部分在绑定时无法对应到控件的D...

weixin_30235225的博客 128

实战Visual C#数据库编程之二(转)

  二.如何浏览数据:   在《Visual C#的数据绑定》中,已经了解了如何把数据集中的某些字段绑定到WinForm组件的某个属性上,这样程序员就可以根据以WinForm组件的来定制数据显示的形式,并且此时的WinForm组...

csdn864883的博客 132

深入解析C# WinForm数据绑定:从核心机制到高级实践

数据绑定是现代软件开发中实现数据与界面分离的核心技术,其原理在于建立数据模型与视图控件之间的自动同步通道。通过事件通知机制,当数据发生变化时,界面能实时响应更新,反之亦然。这项技术的核心价值在于大幅减少冗余的赋值代码,降低耦合度,提升开发效率和可维护性。在桌面应用开发,尤其是C# WinForm上位机、数据管理系统等场景中,数据绑定是实现复杂界面交互的基石。本文将聚焦于C# WinForm框架,深入剖析其基于Binding组件、INotifyPropertyChanged和IBindingList的三层绑定

weixin_34293246的博客 389
上一篇: C#中Brush、Color、String相互转换
下一篇: C#中OnRender()显示MessageBox()的方法
wmjcom
博客等级 码龄24年 71粉丝 48原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值