1.双缓冲问题:
Winform窗体进行鼠标拖放,调整大小等操作时,窗体(Form)和控件(Panel,SplitContainer,RichTextBox等等)边框闪烁剧烈,在网上查了不少资料,大概明白了,是因为Paint事件执行时,各控件重绘刷新时间不一致导致的闪烁。于是自己尝试使用双缓冲解决,发现如下问题:
(1)只有Form有DoubleBuffer属性,诸如Panel,SplitContainer,RichTextBox等控件都没有这个属性,怎么办?
SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint , false);似乎也不能对控件生效。
(2)我自己做实验,分别创建两个空白窗体Form1,Form2,
Form1使用双缓冲处理:
this.DoubleBuffer=true;
SetStyle(ControlStyles.OptimizedDoubleBuffer | ControlStyles.ResizeRedraw | ControlStyles.AllPaintingInWmPaint , false);
Form2不进行任何处理;
两个窗体分别运行后,发现拖放,调整大小时,边缘同样闪烁,毫无区别,这是怎么回事?2.数据库并发访问问题:
(1)为了解决并发访问冲突而采用:锁(Lock)、事务、存储过程。有啥不同?各有何优劣?
(2)为了支持多用户同时远程访问数据库,服务器端的SqlServer需要做什么特别设置?客户端需要安装SqlServer还是只用安装我的CS应用程序?

解决方案 »

  1.   

    第一个问题, 估计得使用其他方式优化, 窗体内的内容太多,计算量是灰常大的, 可以考虑实时呈现拖放的结果, 可以在施放结束以后, 再显示出最终效果 第二, 数据库并发, 由数据库考虑的, Lock, 是为了避免有多个用户同时修改同一个对象 , 事务则是用来保证数据的一致性, 存储过程是一种效率比较高的操作数据库对象的一种手段..客户端只需要安装SqlServer客户端工具就可以了
      

  2.   

    2.2
    客户端只装应用程序打包和.net framework其他的不知掉,顶;
      

  3.   

    如果你通过webservice访问数据库的话,客户端就什么都不需要装了