PSP表格记录功能
关于王者荣耀交流协会的PSP表格记录功能,就是针对我们平时做表格时候遇到问题的简化与解决。这部分功能可以记录我们开始时间,暂停时间,结束时间,并自动计算出各个时间段的净时间。只要你开始工作时点一下开始按钮,结束工作的时候点一下结束按钮,中间暂停工作时点一下暂停按钮。这样我们的程序会自动记录你的时间信息,并且最终生成一个我们需要的PSP表格。以下是我对程序运行结果的截图。
一.点击开始按钮后,若暂停工作,点击暂停按钮,便得到了如下的弹窗。“您已中断工作,赶快回来哦!”
二.当你想要继续工作时,点击继续任务,这是出现弹窗内容为“欢迎回来!加油!
三.如果你顺利的完成了任务,那么点击结束按钮,会产生如下界面。“恭喜你完成了一个任务!”
四.点击确定,便出现了如下一条时间记录,净时间精确到分钟。
五.部分主要代码
1.这部分代码是设计我们所获得的PSP表格每个列的标题。也就是我们平时写表格的时候需要记录的一些项。
ColumnHeader date = new ColumnHeader(); date.Text = "日期"; date.Width = 100; listView1.Columns.Add(date); ColumnHeader categories = new ColumnHeader(); categories.Text = "类别"; categories.Width = 60; listView1.Columns.Add(categories); ColumnHeader tasks = new ColumnHeader(); tasks.Text = "任务"; tasks.Width = 180; listView1.Columns.Add(tasks); ColumnHeader startTime = new ColumnHeader(); startTime.Text = "开始时间"; startTime.Width = 60; listView1.Columns.Add(startTime); ColumnHeader endTime = new ColumnHeader(); endTime.Text = "结束时间"; endTime.Width = 60; listView1.Columns.Add(endTime); ColumnHeader intTime = new ColumnHeader(); intTime.Text = "中断时间"; intTime.Width = 60; listView1.Columns.Add(intTime); ColumnHeader deltaTime = new ColumnHeader(); deltaTime.Text = "净时间"; deltaTime.Width = 60; listView1.Columns.Add(deltaTime); ColumnHeader comment = new ColumnHeader(); comment.Text = "备注"; comment.Width = 250; listView1.Columns.Add(comment);
2.开始时间的按钮点击事件
private void button1_Click(object sender, EventArgs e) { if (signal == 1) MessageBox.Show("您已经开始一个任务了哟~完成此任务再开始下一个吧!"); else { signal = 1;//开始按钮已经点击 //DateTime dateTime = DateTime.Now;//获取当前时间 StartTime = DateTime.Now;//开始时间获取 //new一条记录 一行信息 lvi = new ListViewItem(StartTime.ToLongDateString());//第0列是日期 lvi.SubItems.Add(comboBox.Text);//第一列是类别下拉框 lvi.SubItems.Add(inputTask.Text);//输入好的任务描述信息 lvi.SubItems.Add(StartTime.ToLongTimeString());//开始时间 lvi.SubItems.Add("");//结束时间 暂时为空 lvi.SubItems.Add("");//中断时间 lvi.SubItems.Add("");//净时间 lvi.SubItems.Add(inputComment.Text);//备注信息填入 listView1.Items.Add(lvi);//添加一行 } }
2.结束时间按钮点击事件
private void button2_Click(object sender, EventArgs e) { if (signal == 0) MessageBox.Show("请先开始任务哦~"); else if (flag == 1) MessageBox.Show("请恢复任务之后再结束任务哟!"); else { //DateTime dateTime = DateTime.Now; EndTime = DateTime.Now;//获取结束的时间 MessageBox.Show("恭喜你完成了一个任务!"); //写入结束时间 listView1.Items[i].SubItems[4].Text = EndTime.ToLongTimeString(); //写入开始时间到结束时间的间隔 减去中断时间 tmpSpan = EndTime - StartTime;//起止时间间隔 //MessageBox.Show(tmpSpan.ToString()); deltaTime = tmpSpan - intTime;//减掉中断的时间 //MessageBox.Show(deltaTime.ToString()); listView1.Items[i].SubItems[6].Text = Math.Ceiling(deltaTime.TotalMinutes).ToString(); //行数+1 i++; signal = 0; intTime = new TimeSpan(0, 0, 0, 0); } }
此部分利用公式计算了最终的的deltatime。
3.暂停按钮点击事件
private void button3_Click(object sender, EventArgs e) { if (signal == 0) MessageBox.Show("还没开始任务呢,先输入信息开始一个任务吧!"); else { if (flag == 0)//开始中断 { //record = i; intTime1 = DateTime.Now; flag = 1; MessageBox.Show("您已经中断任务,赶快回来哦!"); button3.Text = "继续任务"; } else//停止中断 { MessageBox.Show("欢迎回来!加油!"); button3.Text = "暂停"; intTime2 = DateTime.Now; flag = 0; intTime += intTime2.Subtract(intTime1);// dateTime - tmp; listView1.Items[i].SubItems[5].Text = intTime.Hours.ToString() + ":" + intTime.Minutes.ToString() + ":" + intTime.Seconds.ToString(); } } }
posted on 2017-11-01 10:07 图子会变成好的程序员 阅读(1357) 评论(0) 编辑 收藏 举报