c# 学习记录(3)

1、SortedList , 删除所有元素,直接用clear即可,如果用for循环,挨个remove,以count作为终止符,会由于count随着删除越来越小,导致不完全删除

拷贝sortedlist,如果直接赋值,例如sortedlist a=b,会由于b的变化而直接改变a,sortedlist应该是个引用副本。目前想到的是直接new一个,然后逐个赋值,这个可以解决。

2、devexpress的GirdView 注意有control和view 的区别,选中某一行的话,用view的鼠标响应比较好,选中的GetFocusedRowCellValue这个函数,参数是Field,数据库的FIeld不是列名

3、用datatable更新,注意endedit后,只是将当前的datatable更新了,并没有更新到数据库里去,还掉用数据库的值得话,会发现没有更新。需要重新load一下。

4、要在其他类中show或者hide一个Form类的话,最好是用UI.Invoke,不然会卡,或者效果不理想

5、相机代的GrabEnd Event,如果在其中重写方法,方法中包括Invoke UI刷新图像的话,如果在其他函数中StopGrab,在beginGrab,有可能会由于图像刷新的最后一张还没有执行完,导致GrabEnd 的Event没有执行结束,直接BeginGrab导致报错。另开一个线程,或者将BeginGRab放在UI线程的Invoke里会比较好。

6、DevExpress的GridView控件,可以直接设置条件,触发变颜色什么的动作,很方便。

7、DataAdapter 和DataTable ,配合Access数据库,真是神器啊。太方便了。

如果datatable先导入一次,clear并没有清除的作用,要么要delete,并accept,这样是更改数据库内文件。

如果要更新datatable,需要new一个全新的。clear什么的不管用。

datarow也是一样,必须new一个新的。

8、尽量所有的函数,线程,都加上try catch,捕捉错误。

        exception可以捕获到所有错误,在项目开发初期完全可以用这个捕获所有异常,防止挂机,假死等,也发便调试。

9、Form程序调用Console,弹窗报错太烦,用console逐行显示所有错误

(54条消息) C# WinForm 应用程序 开启Console窗口_weixin_34041003的博客-CSDN博客

10、一个很诡异的问题,不知道原因,一个FORM类中一个函数,调用datatableupdate函数,都会导致线程卡死。类似下文。

只能尽量不这么用了。

如果调用gridview的UpdateCurrentRow()更新;估计还是因为update的时候要触发UI线程了。

Form::fun1{

enable =true; 另一个线程开始动作

while(result)//等待另一个线程执行完,由于在fun2中卡死了,所以循环出不来。

{}

}

Form::fun2  //可以调进来执行

{

datatable.update();//当update操作时,线程卡死

}

class2:func

{

if (enable)

{

Form.fun2;

}

result=false;

}

但是用一个class::func 中,加一个UI线程begininvoke form.fun2, 问题就解决了。

所以还是UI线程的调用问题。

  • 调用access数据库,用“insert into 表1 (result) values (” + result+”)“,居然会报错,因为表中的列头result 和变量名result冲突。。。把表的列名改为result1就可以了。。。好奇怪。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值