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.列表滑动导致输入框中的 ...
随机推荐
- RabbitMQ和Kafka到底怎么选?
前言 开源社区有好多优秀的队列中间件,比如RabbitMQ和Kafka,每个队列都貌似有其特性,在进行工程选择时,往往眼花缭乱,不知所措.对于RabbitMQ和Kafka,到底应该选哪个? Rabbi ...
- com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known server 报错问题
com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any known serve ...
- .NET Core IdentityServer4实战 第一章-入门与API添加客户端凭据
内容:本文带大家使用IdentityServer4进行对API授权保护的基本策略 作者:zara(张子浩) 欢迎分享,但需在文章鲜明处留下原文地址. 本文将要讲述如何使用IdentityServer4 ...
- MyISAM加锁分析
为什么加锁 你正在读着你喜欢的女孩递给你的信,看到一半的时候,她的好闺蜜过来瞄了一眼(假设她会隐身术,你看不到她),她想把"我很喜欢你"改成"我不喜欢你",刚把 ...
- 利用Asp.Net Core的MiddleWare思想处理复杂业务流程
最近利用Asp.Net Core 的MiddleWare思想对公司的古老代码进行重构,在这里把我的设计思路分享出来,希望对大家处理复杂的流程业务能有所帮助. 背景 一个流程初始化接口,接口中根据传入的 ...
- Element-ui使用技巧
使用第三方字体包 把下载后的*.zip字体包放到项目中在main.js中引用. import "@/assets/font/iconfont.css"; 注意一定要放到elemen ...
- .Net 事件总线之Autofac解耦
事件总线是通过一个中间服务,剥离了常规事件的发布与订阅(消费)强依赖关系的一种技术实现.事件总线的基础知识可参考圣杰的博客[事件总线知多少] 本片博客不再详细概述事件总线基础知识,核心点放置使用Aut ...
- webapi 跨域问题
参考:http://www.cnblogs.com/chenxizhang/p/3821703.html 给自己做个笔记 HttpContext.Current.Response.AddHeader( ...
- SQL Server 数据库基于备份文件的【一键还原】
1. 备份与还原的基础说明 我们知道在DBA的日常工作中,SQL Server 数据库的恢复请求偶有发生,可能是用作数据的追踪,可也可能能是数据库的灾难恢复. 数据库常用的备份命令如下: ----完整 ...
- Java辅助类持续汇总~
/** * 01 * 描述:List<String>集合去除重复数据 * [时间 2019年3月5日下午3:54:09 作者 陶攀峰] */ public static List<S ...