1. DataGridView和ContextMenuStrip的绑定是发生在DataGridView的CellMouseClick事件,在事件中指定右键菜单弹出;

2. DataGridView的列名称(columnName)的指定是(name)属性,如果没有手工指定,那么将会默认为DataPropertyName + 列类型(比如idTextBoxColumn),所以需要手工指定一下:

或者是在load方法中同步一下:

  1. private void frmTaskList_Load(object sender, EventArgs e)
  2. {

  3. foreach (DataGridViewColumn item in this.dgTaskList.Columns)
  4. {
  5. item.Name = item.DataPropertyName;
  6. }

  7. }

3. 父类事件是不能直接让子类调用(但是可以通过实例化之后的子类来为父类的事件赋值),于是需要让父类通过方法封装一下于是有了:

  1. public class BaseEditForm : Form
  2. {
  1. public event RefreshList RefreshParent;
  2.  
  3. public void OnRefreshParent()
  4. {
  5. if (this.RefreshParent != null)
  6. {
  7. this.RefreshParent();
  8. }
  1. }

  1. }
  2.  
  3. public partial class frmEditProject : BaseEditForm
  4. {
  5.     
  6.     private void btnOK_Click(object sender, EventArgs e)
  7.     {
  8.         
  9.         base.OnRefreshParent();
  10.         this.Close();
  11.     }
  12.     
  13. }
  14.  

 

4. Combox的绑定,如果绑定的是List对象,需要先制定displayMember和ValueMember,然后再指定DataSource,否则将会报错:Cannot bind to the new display member.

 

  1. this.cbProj.DisplayMember = "ProjectName";
  2. this.cbProj.ValueMember = "Id";
  3. this.cbProj.DataSource = ProjectService.GetProjects();
  4. this.cbProj.SelectedValue = task.ProjId;

另外,如果是要根据“value”选中下拉框某项,只需要设置selectedValue即可。

 

5. 循环删除

方式一:将删除内容放置到一个新的删除列表中,然后遍历删除列表中的项,从真正的列表中删除该项(避免直接遍历真正list删除导致缺位情况);

方式二:倒叙删除

 

6. LinqToSql的Join

切记,linqtosql的的Join,左侧一定是关联表,右侧才是本次Join的表,如下:

  1. var query = from ws in context.workflowsequeuece
  2. join w in context.workflow on ws.WFID equals w.Id
  3. join t in context.task on ws.TaskId equals t.Id
  4. join e in context.employee on ws.EmpID equals e.Id
  5. where ws.TaskId == m.Id
  6. select

6.Linq返回实体类

  1. public static List<BizEmployee> GetMemebersByProjId(int pProjId)
  2. {
  3. Model1Container container = DbUtil.GetDbContainer();
  4. var query = from t in container.project_employee where t.ProjId == pProjId
  5. select new BizEmployee(t.EmpId.Value, t.EmpName);
  6.  
  7. return query.ToList<BizEmployee>();
  8. }

返回异常:Only parameterless constructors and initializers are supported in LINQ to Entities.

修改为:

  1. public static List<BizEmployee> GetMemebersByProjId(int pProjId)
  2. {
  3. Model1Container container = DbUtil.GetDbContainer();
  4. var query = from t in container.project_employee
  5. where t.ProjId == pProjId
  6. select new BizEmployee { Id = t.EmpId.Value, EmpName = t.EmpName };
  7.  
  8. return query.ToList<BizEmployee>();
  9. }

问题解决。

 

7. DataGridView性能情况

后来发现是因为DataSouce(List<T>)中绑定了一个Workflow对象,去掉这个对象(不赋值)即可轻松绑定。

 

8. Settings

考虑如何实现Winform的“记住用户名密码”,后来发现使用Settings可以实现:

直接在Settings.setting中添加内容:

添加了Settings内容后,直接就会在Settings.Default中体现出来;

赋值方式(注意最后要Save):

  1. Settings.Default.Mail = mail;
  2. Settings.Default.Password = pwd;
  3. Settings.Default.Save();

取值方式

  1. this.txtPwd.Text = Settings.Default.Password;
  2. this.txtUserName.Text = Settings.Default.Mail;

 

评价:简单易行,比之向xml以及ini文件写还要去打开文件、关闭文件,要方便得多。

 

9. MDI父窗体的关闭

如果直接关闭MDI父窗体,将会导致一个问题,主线程没有关闭,这个时候需要:

  1. private void frmParent_FormClosing(object sender, FormClosingEventArgs e)
  2. {
  3. Application.Exit();
  4. }

10.Store update, insert, or delete statement affected an unexpected number of rows (0). Entities may have been modified or deleted since entities were loaded. Refresh ObjectStateManager entries.

碰到了两次这种情况:

1.调用共通方法,传入的entity所定义的类型错了SetEntityType()发放有误;

2.是因为表结构主键没有设置自增长,Id也没有赋值导致。

 

11. DataGridView的ContextStrip属性和右键CellMouseClick失效

1. 如果为DataGridview指定了ContextMenuStrip属性,那么右键的话,DataGridView将不会再走自定义的CellMouseClick事件方法体,而是走内置的展示ContextStript事件;所以如果需要在右键事件中做额外处理(比如获取当前指定的行),那么就不要为DataGridView指定ContextMenuStrip属性了。

2. DataGridView的PropertyName和(Design)Name默认是不一致的,而且通过列名索引使用的是(Design)Name,所以需要对其进行手工设置,或者存取的时候按照(Design)Name来进行获取。

 

EntityFramework

1. Requested value 'Geometry' was not found

几乎一个晚上都在调整这个问题,后来发现是因为Updater工程,被我重定向到了UI/bin/Debug之后,产生的副产物,后来从定向回到了自己的bin目录下,问题完美解决。

MySql

Unable to convert MySQL date/time value to System.DateTime

后来发现是因为Mysql的datetime字段值为0-00000-0,对于空值的日期处理有问题,后来填充上了真实日期后完美解决此问题;

TaskMgr C#技术拾遗的更多相关文章

  1. 基于gin的golang web开发:Gin技术拾遗

    本文是对前几篇文章的一些补充,主要包含两部分:单元测试和实际项目中使用路由的小问题. 拾遗1:单元测试 Golang单元测试要求代码文件以_test结尾,单元测试方法以Test开头,参数为*testi ...

  2. Hive技术拾遗

    1. SELECT语句可以使用正则表达式做列选择,下面的语句查询除了ds和h 之外的所有列:SELECT `(ds|hr)?+.+` FROM sales 2. LEFT SEMI JOIN的限制是, ...

  3. 第11章 拾遗5:IPv6和IPv4共存技术(3)_NAT-PT技术【全书完】

    6.4 NAT-PT (1)NAT-PT和NAT的差别 ①NAT-PT(附带协议转换的网络地址转换)技术秉承NAT技术的思想,但在原理方面大有不同. ②NAT-PT和NAT本质的区别在于应用场合的不同 ...

  4. 第11章 拾遗5:IPv6和IPv4共存技术(2)_ISATAP隧道技术

    6.3 ISATAP隧道技术 (1)基本概念 ①在一个IPv4网络中主机与路由器之间创建一条ISATAP隧道,以便让该主机可以访问IPv6网络中的资源. ②条件:IPv4中的PC主机需要支持IPv4和 ...

  5. 第11章 拾遗5:IPv6和IPv4共存技术(1)_双栈技术和6to4隧道技术

    6. IPv6和IPv4共存技术 6.1 双栈技术 (1)双协议主机的协议结构 (2)双协议栈示意图 ①双协议主机在通信时首先通过支持双协议的DNS服务器查询与目的主机名对应的IP地址. ②再根据指定 ...

  6. ES6 class 技术点拾遗

    语法 方法不需要加function,方法之间不需要加分号 class Point { constructor(x, y) { this.x = x; this.y = y; } toString() ...

  7. 基础拾遗------webservice详解

    基础拾遗 基础拾遗------特性详解 基础拾遗------webservice详解 基础拾遗------redis详解 基础拾遗------反射详解 基础拾遗------委托详解 基础拾遗----- ...

  8. ABAP开发顾问必备:SAP ABAP开发技术总结

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  9. C#多线程技术总结(异步)

    我这里针对现有的C#多线程技术进行一个汇总,一是复习,二是方便索引,文章部份知识点来源于网络,非本人原创. 一.并行(异步): 1.System.Threading.Tasks命名空间下的(TPL): ...

随机推荐

  1. iOS实用技能扩展-静态库的制作与简单使用

    前言:此文是关于静态库的概念描述,如何制作及简单调试使用,不同版本的说明与场景使用. 1.关于库的简介: 库可以分为2种类型 开源库 公开源代码,能看到具体实现 比如SDWebImage.AFNetw ...

  2. XMind十大最有用的功能

    XMind十大最有用的功能 XMind是一款顶级商业品质的思维导图软件和头脑风暴软件,在企业和教育领域都有很广泛的应用,XMind功能全面,易上手,在此小编给大家整理出了XMind十大最有用的功能以供 ...

  3. C#通过FTP账号上传、修改、删除文件 FTPClient

    下面类文件中,主要做的工作是:从ftp服务器上下载文件把本地文件替换.添加.或删除功能,在替换本地文件时会先备份一下本地的文件,若整个操作都完成了就会发出commit命令,表示全部替换成功.若中间操作 ...

  4. 硝烟中的Scrum和XP-我们如何实施Scrum 15)多团队 Part 2/2 16)地理分散 17)检查列表 18)其他

    引入"团队领导"角色 假设有3个团队开发同一个产品 红色的P是PO, 黑色的S是SM, 蓝色是其他团队成员; 如何决定哪些人属于哪个团队? 怎么分配成员? 有人觉得让PO来做人员分 ...

  5. C#调用java接口报“Fault occurred while processing”异常问题

    服务在通常项目中总是要用到的C#的webservice.wcf,还有第三方的,比如java服务.一般来说调用都不会有什么问题,因为服务的标准都是一样的.要注意的就是:1.参数个数匹配:2.参数类型和返 ...

  6. LabVIEW设计模式系列——状态机

    标准:1.状态用枚举自定义类型,便于统一管理修改.2.一般地应该有:Initialize,Idle,Stop,Blank状态.3.Initialize进行一些初始化的操作:Idle一种过渡状态,用于和 ...

  7. Intra-cluster Replication in Apache Kafka--reference

    Kafka is a distributed publish-subscribe messaging system. It was originally developed at LinkedIn a ...

  8. ServletContext对象--三大域对象

    Servlet三大域对象的应用 request.session.application(ServletContext) ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器 ...

  9. [Eclipse]The type XXX cannot be resolved. It is indirectly referenced from required .class files

    在Eclipse中遇到The type XXX cannot be resolved. It is indirectly referenced from required .class files错误 ...

  10. mac下通过docker搭建LEMP环境

    在mac下通过docker搭建LEMP环境境 1.安装virtualbox.由于docker是在lxc环境的容器 2.安装boot2docker,用于与docker客户端通讯 > brew up ...