C#中数据绑定的简单例子 - 详解
数据绑定允许将控件的属性和数据链接起来——控件属性值发生改变,会导致数据跟着自动改变。
数据绑定还可以是双向的——控件属性值发生改变,会导致数据跟着自动改变;数据发生改变,也会导致控件属性值跟着自动改变。
1、数据绑定的三个关键点
实现数据绑定的三个关键步骤
- ①创建绑定数据
- ②控件绑定数据(重点是:数据绑定的语法)
- ③数据更新的通知方法(重点是:属性更改通知事件的实现)
数据绑定的语法
Control.DataBindings.Add(“控件的属性名”,数据源,”数据源的属性名”);
下面通过一个例子——通过按键控制三个控件状态,来演示具体如何进行数据绑定。
2、实现效果
3、整体的文件结构
4、Data.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace videoFromBili_474458694
{
internal class Data : INotifyPropertyChanged{
private bool valveState;
public bool ValveState
{
get { return valveState; }
set
{
valveState = value;
ValveText = valveState ? "水泵已开启" : "水泵已关闭";
ValveColor = valveState ? Color.Green :Color.Red;
OnPropertyChanged(nameof(ValveState));//这一句保证数据绑定是双向的
}
}
public string ValveText { get; set; }
public Color ValveColor { get; set; }//③数据更新的通知方法(重点是:属性更改通知事件的实现)
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this,
new PropertyChangedEventArgs(propertyName));
}
}
}
}
5、Form1.cs
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;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;namespace videoFromBili_474458694
{
public partial class Form1 : Form
{
//①创建绑定数据
Data data = new Data();public Form1()
{
InitializeComponent();//②控件绑定数据
label1.DataBindings.Add("Text",data, "ValveState");
button1.DataBindings.Add("BackColor", data, "ValveColor");
textBox1.DataBindings.Add("Text", data, "ValveText");
}private void button_Open_Click(object sender, EventArgs e)
{
data.ValveState = true;
}private void button_Close_Click(object sender, EventArgs e)
{
data.ValveState = false;
}
}
}
参考
C#上位机数据绑定细节(实用干货分享)_哔哩哔哩_bilibili
【实战】Winform专题实战训练-数据绑定 B0951_哔哩哔哩_bilibili
C#winform数据绑定_winform bind-CSDN博客
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/930753.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!相关文章
Spring Boot整合Druid与Dynamic-Datasource多数据源安装:从错误到完美解决
pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …
用 Perl 实现验证码图像识别
一、引言
验证码(CAPTCHA)是一种区分人类与机器的安全机制,常用于登录、注册等场景中。随着 OCR(光学字符识别)技术的发展,利用编程语言自动识别验证码变得可行。本文将使用 Perl 结合 Tesseract OCR 实现英文数…
网站域名包括网站建设详细方案
基于LabVIEW的CAN通信系统开发案例
介绍了基于LabVIEW开发的CAN通信系统,该系统主要用于汽车行业的数据监控与分析。通过对CAN通信协议的有效应用,实现了车辆控制系统的高效信息交换与实时数据处理,从而提升了车辆性能的检测与优化能力。
项…
实用指南:【结构型模式】代理模式
实用指南:【结构型模式】代理模式pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco&…
中小型企业网站优化推广微信朋友圈做网站推广赚钱吗
cocos2d-x自带了不少示例,以及几个比较简单的游戏,不过这些游戏都是用javascript binding(SpiderMonkey)做的,所以我猜测javascript binding可能是cocos2d-x开发游戏的主流模式,优点是: 游戏逻辑用javascriptÿ…
深入解析:Kotlin 中companion object {} 什么时候触发
pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …
libopenssl-1_0_0-devel-1.0.2p RPM 包安装教程(openSUSE/SLES x86_64)
libopenssl-1_0_0-devel-1.0.2p RPM 包安装教程(openSUSE/SLES x86_64)一、这个包是干啥用的?
它是 OpenSSL 的开发文件包,不是 OpenSSL 本身运行时库。
libopenssl-1_0_0-devel-1.0.2p RPM安装包下载:http…
网站收录提交wordpress文章导入
从远端仓库克隆到本地
前提:本地要安装git,并且登录了账户
1.在要放这个远程仓库的路径下,打git
然后
git clone https://..
如果要登录验证,那就验证下 克隆完后,cd 到克隆的路径,
可以用
git branch -a //查看分支名 git status //查看代码状态
删除…
云数据仓库十年架构演进与技术突破
本文深入解析某云数据仓库服务十年来的技术演进历程,涵盖架构设计、存储计算分离、自动化优化、多服务集成等核心技术突破,展示了从传统数据仓库到现代云原生架构的完整转型过程。云数据仓库的诞生与演进
近十年前,…
心理健康教育网站建设新十条优化措施
150. 逆波兰表达式求值 题目-中等难度示例1. 字典存储function2. if-else 题目-中等难度
给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。
请你计算该表达式。返回一个表示表达式值的整数。
注意: 有效的算符为 ‘’、‘-’…
网站倒计时代码网页制作教程案例
一、总体概述 TypeScript 是 JavaScript 的超集,主要通过静态类型检查和丰富的类型系统来提高代码的健壮性和可维护性。它涵盖了从基础数据类型到高级类型、从函数与对象的类型定义到类、接口、泛型、模块化及装饰器等众多知识点。掌握这些内容有助于编写更清晰、结…
完整教程:SD卡通过读取bin文件替代读取图片格式文件来提高LCD显示速度
完整教程:SD卡通过读取bin文件替代读取图片格式文件来提高LCD显示速度2025-10-07 19:01
tlnshuju
阅读(0)
评论(0) 收藏
举报pre { white-space: pre !important; word-wrap: normal !important; overflow-x: aut…
Claude 封杀中国后,我终于找到了平替!
就在这两天,AI 大模型界像约好了一样,扎堆发布新模型。9 月 29 日 DeepSeek-V3.2-Exp 发布,9 月 30 日 Claude 4.5 紧随其后发布……大家好,我是程序员鱼皮。国庆节本来想好好休息的,结果因为 AI 圈的疯狂内卷被迫…
20251007 模拟测 总结
\(\mathcal{Preface}\)
分数 \(100+100+100+25=325\)。
菜死了。
\(\mathcal{Problem \space{} A}\)
Tag:循环,暴力枚举。
送分题,由于 \(1 \le l \le r \le 3000\) 且 \(1 \le nn \le 3000\),由此可知平方级别的时…
[退役感言]You are my only one.
感谢遇见
一生中最重要的人,
一生所挚爱的人,
最敬佩、最欣赏的人——
你是我心目中
永远的队长,永远的战友;
顶天立地,
无可替代。
You are my only one.
深入解析:【后端架构师的发展路线】
深入解析:【后端架构师的发展路线】pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monac…
有学做美食的网站吗成都市住建局官网查询
在上一章中,我们已经了解了 C 中如何从函数返回数组,类似地,C 允许您从函数返回指针。为了做到这点,您必须声明一个返回指针的函数,如下所示: int * myFunction() { . . . } 另外,C 不支持在函数…