应用小算法
2018-06-17 20:51:16来源:未知 阅读 ()
最近在做一个WPF小项目,因为需要处理一些数据,迫不得已写了一个函数,算是一个小算法吧,在此写出以便温故知新,同时希望牛人不吝赐教,点出其中不足之处。
简化需求:
创建一个datatable表dt,dt表中的记录行数是变量m。创建datatable表dt1、dt2,dt1和dt2循环显示dt中的数据,添加一个计时器定时刷新dt1、dt2中的数据,且dt1和dt2每次只能显示n行。
1、声明变量
private DispatcherTimer timer; DataTable dt = new DataTable(); DataTable dt1 = new DataTable(); DataTable dt2 = new DataTable(); public static int currentRows = 0;//当前行 public static int currentRows2 = 0;//中间变量
定时器:
timer = new DispatcherTimer(); timer.Interval = new TimeSpan(0, 0, 5); timer.Tick += new EventHandler(timer_Tick); timer.Start();
2、添加控件,此处添加两个datagrid控件(用以显示dt1和dt2中的数据)
<DataGrid AutoGenerateColumns="False" Height="335" HorizontalAlignment="Left" Margin="220,12,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="200" > <DataGrid.Columns > <DataGridTextColumn Header="id" Binding="{Binding Path=id}"></DataGridTextColumn> <DataGridTextColumn Header="name" Binding="{Binding Path=name}"></DataGridTextColumn> </DataGrid.Columns> </DataGrid> <DataGrid AutoGenerateColumns="False" Height="305" HorizontalAlignment="Left" Margin="463,31,0,0" Name="dataGrid2" VerticalAlignment="Top" Width="200" > <DataGrid.Columns > <DataGridTextColumn Header="id" Binding="{Binding Path=id}"></DataGridTextColumn> <DataGridTextColumn Header="name" Binding="{Binding Path=name}"></DataGridTextColumn> </DataGrid.Columns> </DataGrid>
3、创建datatable表dt,并且初始化dt1和dt2
private void Initialize(int num) { dt.Columns.Add(new DataColumn("id", typeof(int))); dt.Columns.Add(new DataColumn("name", typeof(string))); for (int i = 0; i < num; i++) { DataRow dr = dt.NewRow(); dr["id"] = i; dr["name"] = "tom" + i.ToString(); dt.Rows.Add(dr); } dt1.Columns.Add(new DataColumn("id", typeof(int))); dt1.Columns.Add(new DataColumn("name", typeof(string))); dt2.Columns.Add(new DataColumn("id", typeof(int))); dt2.Columns.Add(new DataColumn("name", typeof(string))); }
初始化时调用:
Initialize(11);
4、编写函数
public void Update(int num) { int rows = dt.Rows.Count; int num1 = 0; int num2 = 0; currentRows = currentRows2; for (int i = currentRows; i < (currentRows + num); i++) { num1++; currentRows2++; DataRow dr = dt1.NewRow(); dr["id"] = Convert.ToInt32(dt.Rows[i][0].ToString()); dr["name"] = dt.Rows[i][1].ToString(); dt1.Rows.Add(dr); if (i == rows - 1) { i = -1; currentRows2 = 0; } if (num1 == num) { break; } } currentRows = currentRows2; for (int i = currentRows; i < (currentRows + num); i++) { num2++; currentRows2++; DataRow dr = dt2.NewRow(); dr["id"] = Convert.ToInt32(dt.Rows[i][0].ToString()); dr["name"] = dt.Rows[i][1].ToString(); dt2.Rows.Add(dr); if (i == rows - 1) { i = -1; currentRows2 = 0; } if (num2 == num) { break; } } }
5、定时刷新dt1和dt2中的数据
void timer_Tick(object sender, EventArgs e) { dt1.Clear(); dt2.Clear(); Update(3); }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3 enum模块的应用 2019-08-13
- 浅谈 Web框架 2019-08-13
- python 之 并发编程(生产者消费者模型、守护进程的应用) 2019-07-24
- 20190710-汉诺塔算法 2019-07-24
- Python输出菱形 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash