1.INSERT INTO语法错误
向Excel中插入数据,总抱着个这个错误,后来发现是因为关键字重复,只要给所有的字段都加上“[]”扩上即可,至于那个字段有问题,那就不得而知了。
2.Timespan的Minutes和TotalMinutes
Minutes:两个时间的分钟之差。2013/5/6 10:48:12和2013/5/6 10:50:12,Minutes返回的是(-)2
TotalMinutes:则是时间之差换算成分钟的值。同理TotalSeconds.
3. DataGridView的右键菜单实现
业务背景:右键点击DataGridView某一行,可以弹出菜单,有“新建”,“任务完成”等项目,有的功能是针对所点击的这一行。 曾经考虑使用DataGridview的一个ContextMensuStrip的属性来绑定右键菜单,但是这种方式无法定位到你点击的是哪一行。于是采用了自定义菜单的方式。
1)向窗体中添加ContextStrip控件,OK,在开发环境的左下角会出现一个控件,可以通过右键来进行编辑(添加菜单项),也可以单击,然后在开发环境的左上角将会出现一个菜单编辑器,可以添加菜单项以及指定菜单对应的事件;
2)编程:
下面的代码是对于GridView的Cell的Click进行编程
private void dgOnce_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Right) { Point point = this.dgOnce.PointToClient(Cursor.Position);
![大声笑](https://images0.cnblogs.com/blog/71977/201306/24184204-8fae3c2980ec4dc0b8b12faa3af9ee10.png)
this.clickRowIndex = e.RowIndex;
}
}
下面的代码是针对“任务完成”进行编程,他需要获知点击的行对应的索引,这里clickRowIndex起到了用途。
int? clickRowIndex = 0; private void Once_Complete_Click(object sender, EventArgs e) { if (!clickRowIndex.HasValue) { return; } OnceTaskCard card = Utility.ConvertCellToOnceTaskCard(this.dgOnce.Rows[clickRowIndex.Value].Cells); OnceTask task = new OnceTask(); task.Card = card; task.ComplateTask(); this.BindTasks(); }好的,搞定!
4. Notify的实现
业务场景:最小化到工具栏的右下角。
实现方式:
1. 拖拽一个Notify控件到窗体中
2. 在构造函数或者窗体加载的时候,指定:
this.ShowInTaskbar = false;3. 为SizeChange事件以及为单击图标事件编程:
private void FrmTaskList_SizeChanged(object sender, EventArgs e) { if (this.WindowState == FormWindowState.Minimized) { this.Hide(); this.notifyIcon1.Visible = true; } } private void notifyIcon1_Click(object sender, EventArgs e) { this.Show(); this.WindowState = FormWindowState.Normal; this.notifyIcon1.Visible = false; }搞定!
5. 主窗体不能设置为topMost,因为这样会导致弹出窗体被隐藏在主窗体的下面。
6. 控件一般有两个时间Click和MouseClick,如果想要区分右键还是左键,就需要使用MouseClick。
7.TFS如果断开了一次,下一次再打开可能会导致没有比较版本,就是本地版本和服务器版本不一致没有被探测出来。今天测试一种方式是可能会走版本比较多。就是通过连接“Solution Explore”上面的“关联服务器”的方式。