C# BindingSource 未完BindingNavigator

  • 数据绑定
  • 导航
  • 事件
  • 数据验证
  • 自定义
  • 示例
  • 示例
  • 总结

C#中, BindingSource 是一个非常有用的控件,它提供了数据绑定的基础设施。 BindingSource 允许开发者将数据源(如数据库、集合、对象等)与用户界面控件(如文本框、下拉列表等)进行绑定,从而实现数据的展示和编辑。

以下是一些关于 BindingSource 的关键点:

数据绑定

BindingSource 可以绑定到多种数据源。以下是一些你可以绑定到 BindingSource 的数据源类型:

  • 列表(List):任何实现了 IList 接口的集合,例如 List<T>、ArrayList 等。
  • 数组(Array):任何类型的数组,如 int[]、string[]、object[] 等。
  • 数据表(DataTable):DataTable 是 DataSet 的一部分,常用于 ADO.NET 应用程序中。
  • 数据集(DataSet):一个包含多个 DataTable 的容器,可以看作是内存中的数据库。
  • 数据视图(DataView):一个 DataTable 的自定义视图,可以用来排序和筛选数据。
  • 实体框架(Entity Framework):使用 Entity Framework 时,可以将 DbSet<T> 或查询结果绑定到 BindingSource。
  • LINQ 查询结果:任何返回序列的 LINQ 查询,如 IEnumerable<T>、IQueryable<T> 等。
  • 自定义集合:任何自定义的集合类,只要它们实现了 IList 或 IBindingList 接口。
  • 单值:虽然不常见,但 BindingSource 也可以绑定到单个对象。

导航

C#Windows窗体应用程序中,BindingSource 组件提供了内置的数据导航功能,允许你轻松地在绑定的数据集中移动。以下是一些常用的导航方法:

  • MoveFirst():将当前记录位置移动到数据集中的第一条记录。
  • MoveLast():将当前记录位置移动到数据集中的最后一条记录。
  • MoveNext():将当前记录位置向前移动一条记录。如果当前已经是最后一条记录,则不会有任何移动。
  • MovePrevious():将当前记录位置向后移动一条记录。如果当前已经是第一条记录,则不会有任何移动。
  • Position 属性:获取或设置当前记录的位置。这个属性是基于0的,所以第一条记录的位置是0

以下是一个简单的例子,展示了如何在Windows窗体应用程序中使用 BindingSource 进行数据导航:

public partial class Form1 : Form
{private BindingSource bindingSource1 = new BindingSource();public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){// 假设有一个 DataTable 叫做 myDataTablebindingSource1.DataSource = myDataTable;dataGridView1.DataSource = bindingSource1;}private void buttonFirst_Click(object sender, EventArgs e){bindingSource1.MoveFirst();}private void buttonPrevious_Click(object sender, EventArgs e){bindingSource1.MovePrevious();}private void buttonNext_Click(object sender, EventArgs e){bindingSource1.MoveNext();}private void buttonLast_Click(object sender, EventArgs e){bindingSource1.MoveLast();}
}

在这个例子中,我们创建了一个 BindingSource 对象,并将其绑定到一个 DataGridView 控件。我们还添加了一些按钮,用于导航数据。每个按钮的点击事件都会调用 BindingSource 的相应导航方法,从而在数据集中移动当前记录的位置。

此外,BindingSource 还会触发一些事件,如 PositionChangedCurrentChanged,这些事件在导航操作发生时会触发,允许你执行额外的逻辑,比如更新用户界面以反映当前记录的变化。

事件

BindingSource 支持多种事件,如 CurrentChangedPositionChangedDataSourceChanged 等,这些事件可以在数据或导航状态改变时触发。

数据验证

BindingSource 可以与 BindingNavigator 控件一起使用,提供数据验证和错误处理机制。

自定义

BindingSource 允许开发者自定义数据绑定逻辑,包括数据格式转换、数据过滤等。

示例

下面是一个简单的示例,展示如何在 WinForms 应用程序中使用 BindingSource

// 创建 BindingSource 实例
BindingSource bindingSource = new BindingSource();// 设置数据源,这里假设有一个名为 customers 的 List<Customer> 类型的数据集合
bindingSource.DataSource = customers;// 将 BindingSource 绑定到一个 DataGridView 控件
dataGridView1.DataSource = bindingSource;// 导航到第一条记录
bindingSource.MoveFirst();// 导航到下一条记录
bindingSource.MoveNext();

在这个示例中,customers 是一个包含 Customer 对象的列表,每个 Customer 对象代表一个客户。通过 BindingSource,我们可以将这个列表绑定到 DataGridView 控件上,从而在界面上展示客户数据。

示例

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace forForm2019 {public partial class Form1 : Form {public Form1() {InitializeComponent();}private void Form1_Load(object sender, EventArgs e) {allStudents.Add(new Student { age = 1, name = "a" });allStudents.Add(new Student { age = 1, name = "a" });bindingSource1.DataSource = allStudents;dataGridView1.DataSource = bindingSource1;num.count = allStudents.Count;bs_lable.DataSource = num;label1.DataBindings.Add("Text", bs_lable, "count");}List<Student> allStudents = new List<Student>();BindingSource bs_lable = new BindingSource();Number num = new Number();private void button1_Click(object sender, EventArgs e) {allStudents.Add(new Student { age = 1, name = "a" });num.count = allStudents.Count;bindingSource1.ResetBindings(false);bs_lable.ResetBindings(false);}}class Student {public int age { get; set; }public string name { get; set; }}class Number {public int count { get; set; }public int index { get; set; }}
}

在这里插入图片描述

上述代码有两个绑定,一是ListDataView,二是CountLable,不能绑定单个int,但能绑定类。

总结

BindingSource 是数据绑定中一个非常强大的工具,它简化了数据与UI控件之间的交互,使得数据操作更加直观和方便。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/25949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

01、Linux网络设置

目录 1.1 查看及测试网络 1.1.1 查看网络配置 1、查看网络接口地址 2、查看主机状态 3、查看路由表条目 4、查看网络连接qing 1.1.2 测试网络连接 1.测试网络连接 2.跟踪数据包的路由路径 3.测试DNS域名解析 1.2 设置网络地址参数 1.2.1 使用网络配置命令 1.修改网卡…

在Linux or Windows中如何优雅的写出对拍

在Linux or Windows中如何优雅的写出对拍 一、前言二、结论1、对拍 三、对拍详解1、什么是对拍呢&#xff1f;&#x1f9d0;2、对拍的组成部分3、输入数据生成4、对拍程序5、操作流程 四、最后 一、前言 网上的对拍程序层出不穷&#xff0c;大多Linux和Windows中的对拍程序都是…

MySQL 函数与约束

MySQL 函数与约束 文章目录 MySQL 函数与约束1 函数1.1 字符串函数1.2 数值函数1.3 日期函数1.4 流程函数 2 约束2.1 概述2.2 约束演示2.3 外键约束2.4 删除/更新行为 1 函数 函数是指一段可以直接被另一程序调用的程序或代码。 1.1 字符串函数 MySQL中内置了很多字符串函数&…

通用信息提取数据预处理

train_data./datasets/duuie output_folder./datasets/duuie_pre ignore_datasets["DUEE", "DUEE_FIN_LITE"] schema_folder./datasets/seen_schema # 对CCKS2022 竞赛数据进行预处理 import shutil # shutil.copytree(train_data,output_folder) impor…

项目:基于httplib/消息队列负载均衡式在线OJ

文章目录 写在前面关于组件开源仓库和项目上线其他文档说明项目亮点 使用技术和环境项目宏观结构模块实现compiler模块runner模块compile_run模块compile_server模块 基于MVC结构的OJ服务什么是MVC&#xff1f;用户请求服务路由功能Model模块view模块Control模块 写在前面 关于…

linux安装jdk + docker+dockercompose+aliyunACR

下载安装包 链接&#xff1a;https://pan.baidu.com/s/1AyFvPA5qwy4IxfZoTQohrQ 提取码&#xff1a;6666 安装jdk jdk-8u411-linux-x64.tar.gz 链接&#xff1a;https://pan.baidu.com/s/1BZ7J4L5PY-9nuQyxBMDGTA 提取码&#xff1a;6666 1、解压jdk tar -xvf jdk-8u411-li…

如何克隆笔记本电脑上的硬盘?

笔记本电脑的信息存储在硬盘上&#xff0c;一旦硬盘发生故障&#xff0c;数据很容易丢失。克隆技术使我们能够将一个硬盘上的数据精确复制到另一个硬盘上&#xff0c;然后将其用作备份。此外&#xff0c;如果我们决定升级到更大容量或固态硬盘&#xff0c;克隆技术还允许我们将…

linux中xterm窗口怎么调整字体大小

需求&#xff1a;打开的xterm窗口字体比较小&#xff0c;怎么才能调整字体大小&#xff0c;打开的大写&#xff1a; 解决方法&#xff1a; 在home目录下搞一个设置文件 .Xresource&#xff0c;里面内容如下 然后把设置文件添加到 .tcshrc 文件中生效 这样重新打开的xterm字…

真北游记|三江交汇,碧海苍梧,端午去梧州吃龟苓膏

准备 t-14&#xff1a;高铁抢票&#xff08;A&#xff09; t-14&#xff1a;订行程(B)酒店&#xff08;C&#xff09; T-2&#xff1a;准备水、零食 T-1&#xff1a;物质准备&#xff1a;衣服、纸巾、毛巾、雨伞&#x1f302;、拖鞋、口罩&#x1f637;&#xff08;D&#xff0…

ARMxy赋能温室环境自动化调控

智慧农业正以其独特的魅力描绘着未来的轮廓。作为这一变革的中坚力量&#xff0c;ARMxy工业计算机凭借其高性能、低功耗及高度灵活性&#xff0c;正逐步成为智能温室控制、精准灌溉及作物生长监测领域的核心引擎。 智能温室的智慧大脑 位于某地的现代农业园区&#xff0c;一座…

力扣118. 杨辉三角

给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示例 2: 输入: numRows 1 输出: [[1…

Python图像处理入门学习——基于霍夫变换的车道线和路沿检测

文章目录 前言一、实验内容与方法二、视频的导入、拆分、合成2.1 视频时长读取2.2 视频的拆分2.3 视频的合成 三、路沿检测3.1 路沿检测算法整体框架3.2 尝试3.3 图像处理->边缘检测(原理)3.4 Canny算子边缘检测(原理)3.5 Canny算子边缘检测(实现)3.5.1 高斯滤波3.5.2 图像转…

软件游戏steam_api.dll丢失的解决方法,总结5种有效的方法

在玩电脑游戏时&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“游戏缺少steam_api.dll”。这个问题可能让很多玩家感到困惑和烦恼。那么&#xff0c;究竟是什么原因导致游戏缺少steam_api.dll呢&#xff1f;又该如何解决这个问题呢&#xff1f;本文将为大家…

ISO 19115-2:2019 第6章 获取和处理元数据

6 获取和处理元数据 6.1 获取和处理要求的元数据 ISO 19115-1 确定了描述数字地理资源所需的元数据。本文件扩展了 ISO 19115-1 中确定的元数据,并确定了描述地理资源获取和处理所需的附加元数据。 6.2 获取和处理元数据包及其依赖关系 ISO 地理信息系列标准使用一个或多个…

接口测试时, 数据Mock为何如此重要?

一、为什么要mock 工作中遇到以下问题&#xff0c;我们可以使用mock解决&#xff1a; 1、无法控制第三方系统某接口的返回&#xff0c;返回的数据不满足要求 2、某依赖系统还未开发完成&#xff0c;就需要对被测系统进行测试 3、有些系统不支持重复请求&#xff0c;或有访问…

Qt安装时出现无法下载存档,环境配置,main中自定义类编译不过问题

1. Qt安装时出现无法下载存档 进入Qt安装程序exe所在的文件目录&#xff0c;一般在下载文件夹&#xff0c;右键打开cmd。cmd输入&#xff1a;对应的exe镜像提速。 .\qt-online-installer-windows-x64-4.8.0.exe --mirror https://mirrors.cloud.tencent.com/qt/ 2. 环境配置 …

Jmeter压测 —— 1秒发送1次请求

场景&#xff1a;有时候测试场景需要设置请求频率为一秒一次&#xff08;或几秒一次&#xff09;实现方法一&#xff1a;1、首先需要在线程组下设置循环次数&#xff08;可以理解为请求的次数&#xff09; 次数设置为请求300次&#xff0c;其中线程数跟时间自行设置 2、在设置…

XSS(跨站脚本攻击)

1.什么是xss XSS全称&#xff08;Cross Site Scripting&#xff09;跨站脚本攻击&#xff0c;为了避免和CSS层叠样式表名称冲突&#xff0c;所以改为了 XSS&#xff0c;是最常见的Web应用程序安全漏洞之一,XSS是指攻击者在网页中嵌入客户端脚本&#xff0c;通常是JavaScript编写…

晨控CK-UR12-E01与欧姆龙NX/NJ系列EtherNet/IP通讯手册

晨控CK-UR12-E01与欧姆龙NX/NJ系列EtherNet/IP通讯手册 晨控CK-UR12-E01 是天线一体式超高频读写器头&#xff0c;工作频率默认为902MHz&#xff5e;928MHz&#xff0c;符合EPC Global Class l Gen 2&#xff0f;IS0-18000-6C 标准&#xff0c;最大输出功率 33dBm。读卡器同时…

vue3-使用富文本编辑器-wangEditor-文章发表1

最近在搞项目:我们组内几位成员正在搞一个网站搭建,以后更新会比较缓慢 引言:如果要网站要用的富文本编辑器的话,这边推荐用wangEditor 官网地址传送 : wangEditorhttps://www.wangeditor.com/ 我现在还在扩展我的写文章用的富文本编辑器 现在我将简单介绍一下其基本使用方…