WinForm DataGridView实时更新表格数据
悲伤 不想说话
using System;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
public partial class FDataGridView : Form // 在窗体上拖一个DataGridView上去
{
// 1) 实现System.ComponentModel.INotifyPropertyChanged接口
class Character : INotifyPropertyChanged
{
string _name;
[DisplayName("你的名字")] // 这是显示的列名称哦
public string Name
{
get { return _name; }
set
{
if (_name != value)
{
_name = value;
NotifyPropertyChanged("Name");
}
}
} // 2) 在属性改变时引发事件
int _age;
[DisplayName("他的年纪")]
public int Age
{
get { return _age; }
set
{
if (_age != value)
{
_age = value;
NotifyPropertyChanged("Age");
}
}
} PropertyChangedEventHandler _propertyChanged;
public event PropertyChangedEventHandler PropertyChanged
{
add { _propertyChanged += value; }
remove { _propertyChanged -= value; }
} private void NotifyPropertyChanged(string property_name)
{
_propertyChanged?.Invoke(this, new PropertyChangedEventArgs(property_name));
}
} /* end of class Character */ DataTable _dtSource; // 方式一 BindingList<Character> _bdList; // 方式二
BindingSource _bdSource; public FDataGridView()
{
InitializeComponent(); FormClosing += FDataGridView_FormClosing; Menu = new MainMenu();
MenuItem operation = new MenuItem("Operation"); Menu.MenuItems.Add(operation); MenuItem menu1 = new MenuItem("DataTable");
MenuItem menu11 = new MenuItem("Bind DataSource", menu11_Click);
MenuItem menu12 = new MenuItem("Change Data", menu12_Click);
MenuItem menu13 = new MenuItem("Create Data", menu13_Click);
menu1.MenuItems.Add(menu11);
menu1.MenuItems.Add(menu12);
menu1.MenuItems.Add(menu13); MenuItem menu2 = new MenuItem("BindingSource");
MenuItem menu21 = new MenuItem("Bind DataSource", menu21_Click);
MenuItem menu22 = new MenuItem("Change Data", menu22_Click);
MenuItem menu23 = new MenuItem("Create Data", menu23_Click);
menu2.MenuItems.Add(menu21);
menu2.MenuItems.Add(menu22);
menu2.MenuItems.Add(menu23); operation.MenuItems.Add(menu1);
operation.MenuItems.Add(menu2); Init();
} private void FDataGridView_FormClosing(object sender, FormClosingEventArgs e)
{
_dtSource.Dispose();
_bdList.Clear();
_bdSource.Dispose(); _dtSource = null;
_bdList = null;
_bdSource = null;
} void Init()
{
_dtSource = new DataTable();
_bdList = new BindingList<Character>();
_bdSource = new BindingSource();
_bdSource.DataSource = _bdList; // 3) 绑定数据源,由BindingSoource组件处理细节 _dtSource.Columns.Add(new DataColumn("Name"));
_dtSource.Columns.Add(new DataColumn("Age")); DataRow dr; dr = _dtSource.NewRow();
dr["Name"] = "";
dr["Age"] = "";
_dtSource.Rows.Add(dr); dr = _dtSource.NewRow();
dr[] = "";
dr[] = "";
_dtSource.Rows.Add(dr); _dtSource.Rows.Add(, ); _bdList.Add(new Character() { Name = "", Age = });
_bdList.Add(new Character() { Name = "", Age = });
_bdList.Add(new Character() { Name = "", Age = });
} #region menu click
private void menu11_Click(object sender, EventArgs e)
{
dataGridView1.DataSource = null;
dataGridView1.DataSource = _dtSource;
} private void menu12_Click(object sender, EventArgs e)
{
_dtSource.Rows[][] = new Random().Next(, );
} private void menu13_Click(object sender, EventArgs e)
{
_dtSource.Rows.Add(Guid.NewGuid().ToString("N"), "en");
} private void menu21_Click(object sendr, EventArgs e)
{
dataGridView1.DataSource = null;
dataGridView1.DataSource = _bdSource;
} private void menu22_Click(object sender, EventArgs e)
{
_bdList[].Age = new Random().Next(, );
} private void menu23_Click(object sender, EventArgs e)
{
_bdList.Add(new Character() { Name = Guid.NewGuid().ToString("N") });
}
#endregion private void dataGridView1_DataError(object sender, DataGridViewDataErrorEventArgs e)
{
;// dataGridView1.DataError += dataGridView1_DataError; 处理表格异常
} private void dataGridView1_RowPostPaint(object sender, DataGridViewRowPostPaintEventArgs e)
{
if (e.RowIndex >= )
e.Graphics.DrawString((e.RowIndex + ).ToString(), e.InheritedRowStyle.Font, Brushes.Red, e.RowBounds.X + , e.RowBounds.Y + );
} } /* end of class */
WinForm DataGridView实时更新表格数据的更多相关文章
- Jquery无刷新实时更新表格数据
html代码: <style> .editbox { display:none } .editbox { font-size:14px; width:70px; background-co ...
- 在Winform中直接录入表格数据和在Vue&Elment中直接录入表格数据的比较
一般来说,录入数据的时候,我们都采用在一个窗体界面中,根据不同内容进行录入,但是有时候涉及主从表的数据录入,从表的数据有时候为了录入方便,也会通过表格控件直接录入.在Winform开发的时候,我们很多 ...
- android ListView中含有按钮事件实时更新ListView数据案例
1.布局文件Listview <?xml version="1.0" encoding="utf-8"?> <android.support. ...
- WebSocket 实时更新mysql数据到页面
使用websocket的初衷是,要实时更新mysql中的报警信息到web页面显示 没怎么碰过web,代码写的是真烂,不过也算是功能实现了,放在这里也是鞭策自己,web也要多下些功夫 准备 引入依赖 & ...
- Python tkinter库将matplotlib图表显示在GUI窗口上,并实时更新刷新数据
代码 1 ''' 2 使用matplotlib创建图表,并显示在tk窗口 3 ''' 4 import matplotlib.pyplot as plt 5 from matplotlib.pylab ...
- 实现DataGridView实时更新数据
;).ToString() + ).ToString() + "秒"; } }}
- Web实时更新客户端数据
1 轮询方式实现客户端数据及时更新 在基于Web的即时通信.股票行情这样的系统中,需要客户端能够及时更新内容.由于B/S架构的特性(Http连接是无状态连接, 即服务器处理完客户的请求, ...
- solr实时更新mysql数据的方法
第一步:创建core core是solr的特有概念,每个core是一个查询数据,.索引等的集合体,你可以把它想象成一个独立数据库,我们创建一个新core:名字[core1] 进入linux命令行,进入 ...
- Android RecyclerView嵌套EditView实时更新Item数据
一.场景(例如:购物车) 1.当我们需要以列表样式管理某些数据时,可能需要列表项的某个字段可编辑 2.编辑Item上的某个字段后可能还要更新相关字段的值 二.可能遇到的问题 1.列表滑动导致输入框中的 ...
随机推荐
- C# 高性能 TCP 服务的多种实现方式
哎~~ 想想大部分园友应该对 "高性能" 字样更感兴趣,为了吸引眼球所以标题中一定要突出,其实我更喜欢的标题是<猴赛雷,C# 编写 TCP 服务的花样姿势!>. 本篇文 ...
- UML用法及状态图,活动图介绍
统一建模语言UML(Unified Modeling Language)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建和编写一个正在开发的.面向对象的.软件密集系统的制 ...
- Haskell学习-monad
原文地址:Haskell学习-monad 什么是Monad Haskell是一门纯函数式的语言,纯函数的优点是安全可靠.函数输出完全取决于输入,不存在任何隐式依赖,它的存在如同数学公式般完美无缺.可是 ...
- 利用Asp.Net Core的MiddleWare思想处理复杂业务流程
最近利用Asp.Net Core 的MiddleWare思想对公司的古老代码进行重构,在这里把我的设计思路分享出来,希望对大家处理复杂的流程业务能有所帮助. 背景 一个流程初始化接口,接口中根据传入的 ...
- .Net 反射学习
Why?为什么使用反射 MVC ORM EF 都是用的反射.反射可以让程序的扩展性,灵活性得到加强.一起即可动态创建 what 反射原理 动态加载类库 ,先添加引用类库,或者复制debug里 ...
- Oracle数据库常用SQL函数
1.SQL函数的概念: 函数一般是在数据上执行的,它给数据的转换和处理提供了方便.只是将取出的数据进行处理,不会改变数据库中的值.(类似于java中的方法但函数只是将数据库中的数据取出(复制)到函数中 ...
- Git:九、删除项目
1.删除远程仓库 1)打开有绿色客隆按钮的仓库代码页面,选择Settings 2)把页面拉到最下边 2.删除本地仓库 1)先删.git隐藏文件 2)强行删除仓库文件夹 显示所有文件,包括隐藏的:ls ...
- SpringCloud的分布式配置及消息总线
1.在搭建分布式配置时,我们大概看下分布式配置的流程 如图所示: 当一个系统中的配置文件发生改变的时候,我们需要重新启动该服务,才能使得新的配置文件生效,spring cloud config可以实现 ...
- [题解] 2038: [2009国家集训队]小Z的袜子(hose)
莫队,卡常数 题目地址 思路 设\(\text{Vis[i]}\)为元素\(\text{i}\)在区间\(\text{[L,R]}\)的出现次数 考虑区间\(\text{[L,R]}\)和元素\(\t ...
- Linux如何管理文档多租户
例题 同一群组microsoft下的两个账号justmine001和justmine002需要共同拥有目录/microsoft/eshop的开发权,以便进行协同工作,但是其他人不允许进入和查阅该目录. ...