开发问题集锦

【1】重用项目窗体解决方案:

1. 把FmMain.cs 和 FmMain.Designer.cs 和 FmMain .resx 三个文件复制到程序目录下;

2. 在vs里面添加现有项, 选择FmMain.cs, 不用选择其它文件, 完成操作后重新打开窗口。

【2】无法读写注册表解决方案

  程序读写注册表是,通过代码将以下注册表路径下的Enabled值修改为0:

  HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy

  实现代码如下:

public void SetFipsAlgorithmPolicyValue()
{
    string keyName = @"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy";
    if (Convert.ToBoolean(Registry.GetValue(keyName, "Enabled", null)))
    {
        Registry.SetValue(keyName, "Enabled", 0, RegistryValueKind.DWord);
    }
}

【3】WinForm设置窗体控件双缓冲代码:

using System.Windows.Forms;
class ListViewEx:ListView
{
    public ListViewEx()
    {
        SetStyle(ControlStyles.DoubleBuffer | ControlStyles.OptimizedDoubleBuffer | ControlStyles.AllPaintingInWmPaint, true);
        UpdateStyles();
    }
}

【4】MSDN推荐的Lock对象:自定义类推荐用私有的只读静态对象

通常,最好避免锁定 public 类型或锁定不受应用程序控制的对象实例。例如,如果该实例可以被公开访问,则 lock(this) 可能会有问题,因为不受控制的代码也可能会锁定该对象。这可能导致死锁,即两个或更多个线程等待释放同一对象。出于同样的原因,锁定公共数据类型(相比于对象)也可能导致问题。而且lock(this)只对当前对象有效,如果多个对象之间就达不到同步的效果。而自定义类推荐用私有的只读静态对象,比如:private static readonly object obj = new object();为什么要设置成只读的呢?这时因为如果在lock代码段中改变obj的值,其它线程就可以执行lock锁定的代码片段。

【5】C#匹配a标签各个参数的正则表达式:

string regex = "(?is)<a[^>]*(style=[\"‘])?(?<style>[^\"‘]*?)[\"‘][^>]*(href=[\"‘])?(?<url>[^\"‘]*?)[\"‘][^>]*>(?<text>[\\w\\W]*?)</a>";

需求改变,以上的正则表达式也需要进行适当修改

[^"] 不是表示双引号的任意字符 ,* 表示重复0到多次
     所以 ([^"]*) 是匹配非双引号字符组成的字符串

Q:经常看见的正则前面的 (?i) (?s) (?m) (?is) (?im) 是什么意思?
A: 称为内联匹配模式,通常用内联匹配模式代替使用枚举值RegexOptions指定的全局匹配模式,写起来更简洁。
    (?i) 表示所在位置右侧的表达式开启忽略大小写模式
    (?s) 表示所在位置右侧的表达式开启单行模式。
    更改句点字符 (.) 的含义,以使它与每个字符(而不是除 \n 之外的所有字符)匹配。
    注意:(?s)通常在匹配有换行的文本时使用
    (?m) 表示所在位置右侧的表示式开启指定多行模式。
    更改 ^ 和 $ 的含义,以使它们分别与任何行的开头和结尾匹配,
    而不只是与整个字符串的开头和结尾匹配。
    注意:(?m)只有在正则表达式中涉及到多行的“^”和“$”的匹配时,才使用Multiline模式。
    上面的匹配模式可以组合使用,比如(?is),(?im)。
    另外,还可以用(?i:exp)或者(?i)exp(?-i)来指定匹配的有效范围。

【6】关于SQL Server数据库连接字符串的特殊参数说明

MultipleActiveResultSets和Mars_Connection同义,指定此数据库连接是否复用数据库内已建立的相同用户的连接。如为True时,建立数据库连接时会先查询服务器上是否已为此用户建立连接,如已建立则直接复用此连接。默认值为False。将MultipleActiveResultSets设置为True可以提高效率。

Persist Security Info = True时,表明采用集成安全机制;若为False,则表明不采用集成安全机制,默认值为False。

【7】解决错误:System.ArgumentException: 另一个 SqlParameterCollection 中已包含 SqlParameter 的方案

错误详细信息:

System.ArgumentException: 另一个 SqlParameterCollection 中已包含 SqlParameter。
具体原因:

声明的SqlParameter数组,而在循环的内部,每一次执行ExecuteNonQuery都由该方法内部的IDbCommand.Parameters.Add(IDbDataParameter)将SqlParameter数组添加到IDbCommand的IDataParameterCollection中。而framework机制限制两个IDataParameterCollection指向同一个对象。虽然ExecuteNonQuery方法内部声明了一个IDbCommand的临时对象,理论上讲,这个包含了IDataParameterCollection的IDbCommand对象会在ExecuteNonQuery方法结束时从内存中释放。但是实际上可能是由于垃圾回收机制并没有将IDbCommand临时对象即时的回收,而且改对象绑定的Parameter集合也存在,就像一个DropDownList添加Item一样。所以在下一次操作执行的时候,会导致两个IDataParameterCollection指向同一个对象,此时出现问题。
解决方案一:

在每次操作时,重新生成对象,但这样会产生大量的垃圾变量,不可取。
解决方案二:

将使用完之后的Command命令的Parameters集合清空。

调用代码如下:

SqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();

【8】js页面跳转 和 js打开新窗口方法

第一种:
    <script language="javascript" type="text/javascript">
           window.location.href="http://www.xlfun.com/login.php?backurl="+window.location.href;
    </script>

第二种:
    <script language="javascript">
    alert("返回");
    window.history.back(-1);
   </script>

第三种:
   <script language="javascript">
    window.navigate("xlfun.php");
   </script>

第四种:
   <script language="JavaScript">
          self.location=‘xlfun.htm‘;
   </script>

第五种:
   <script language="javascript">
          alert("非法访问!");
          top.location=‘xlfun.html;
   </script>

1.在原来的窗体中直接跳转用
      window.location.href="你所要跳转的页面";
2、在新窗体中打开页面用:
      window.open(‘你所要跳转的页面‘);
      window.history.back(-1);返回上一页
3、一些用法

按钮式:
  <input name="pclog" type="button" value="/GO" onClick="location.href=‘连接地址‘">
链接式:
    <a href="javascript:history.go(-1)">返回上一页</a>
  <a href="<%=Request.ServerVariables("HTTP_REFERER")%>">返回上一页</a>
直接跳转式:
  <script>window.location.href=‘连接地址‘;</script>
开新窗口:
  <a href="/javascript:" onClick="window.open(‘http://www.dolalre.com.cn‘,‘‘,‘height=500,width=611,scrollbars=yes,status =yes‘)">123</a>
  <script>
            window.open(‘xlfun.html‘,‘newwindow‘,‘height=100,width=400,top=0,left=0,toolbar=no,menubar=no,scrollbars=no,resizable=no,location=no, status=no‘)
  </script>

脚本运行后,page.html将在新窗体newwindow中打开,宽为100,高为400,距屏顶0象素,屏左0象素,无工具条,无菜单条,无滚动条,不可调整大小,无地址栏,无状态栏。

【9】解决错误:从客户端(Content="<p>测试</p>")中检测到有潜在危险的 Request.Form 值
      .NetFrameWork 4.0 Validaterequest="false"不起作用,需要恢复到2.0的ASP.NET请求验证功能的行为,要在以下设置 Web.config文件中的system.web节点修改 requestValidationMode 的值为“2.0”:

<httpRuntime requestValidationMode="2.0"/>

值得注意的是,需要同时在页面和配置文件里配置 Validaterequest="false" 才会生效。即使是.NetFrameWork 4.0 或者 .NetFrameWork 4.5,也可以使用2.0的验证方式。
      不过这样做会增加网站的安全风险,需要谨慎使用。

【10】C#内存释放的几个方法对比:

时间: 2024-10-15 20:33:43

开发问题集锦的相关文章

node.js项目开发问题集锦(不定期更新,随时把开发过程中遇到的问题加上)

1.用express开发站点时,怎么定义通用的头部和尾部 方案1:用类似asp时代的include添加,如ejs模板: <% include ../header.ejs %> <h1 class="page-header"> 这里是内容. 注:..表示header.ejs在上一级目录,ejs扩展名可以去掉,直接写:include ../header </h1> <% include ../footer %> 方案2:用类似于MVC的lay

Unity 游戏开发技巧集锦之使用cookie类型的纹理模拟云层的移动

Unity 游戏开发技巧集锦之使用cookie类型的纹理模拟云层的移动 使用cookie类型的纹理模拟云层的移动 现实生活中,当阳光直射大地,而天空中又有很多云时,云层的影子总是会投射在大地上,风吹着云层移动,影子也跟着运动,如图3-28所示. 图3-28  天空中的云朵与大地上的影子 要在游戏中,模拟与之类似的大气现象时,就需要使用cookie类型的纹理. 制作云层效果的纹理 本小节将使用PhotoShop绘制有云层效果的纹理图,然后为其添加透明度信息.具体操作过程如下: (1)使用Photo

Unity 游戏开发技巧集锦之创建透明的材质

Unity 游戏开发技巧集锦之创建透明的材质 Unity创建透明的材质 生活中不乏透明或者半透明的事物.例如,擦的十分干净的玻璃,看起来就是透明的:一些塑料卡片,看起来就是半透明的,如图3-23所示.在Unity中,可以创建模拟了透明效果的材质,这也是本节主要讲解的内容. 图3-23  半透明的卡片 Unity创建并配置材质 在Project视图里,创建一个材质,并命名为TransMaterial,选中它然后在Inspector视图里修改Shader属性为Transparent/Diffuse,

?Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果

Unity 游戏开发技巧集锦之使用忍者飞镖创建粒子效果 使用忍者飞镖创建粒子效果 游戏中,诸如烟.火.水滴.落叶等粒子效果,都可以使用粒子系统(particle system)来实现.例如,<明朝传奇>中的篝火,如图2-32所示.粒子系统的最新版本也被称做忍者飞镖(Shuriken),因为场景中添加的粒子系统酷似忍者飞镖,如图2-33所示. 图2-32  游戏中的篝火               图2-33  粒子系统,也被称为忍者飞镖 unity中粒子基本属性 在使用粒子系统前,先了解一下它

Unity 4.x游戏开发技巧集锦第2章摄像机的应用

Unity 4.x游戏开发技巧集锦第2章摄像机的应用 作为游戏开发者,千万不要忽略了摄像机(Camera)的重要性.毕竟玩家是通过摄像机,才看到了游戏的视图.本章将介绍一些摄像机的常见应用.本文选自<Unity 4.x游戏开发技巧集锦> Unity 4.x游戏开发技巧集锦2.1  设置双游戏视图 很多游戏里,一个游戏的视图中,经常会包含另一个游戏视图.而两个视图所呈现的,是由两个摄像机在场景的不同位置所拍摄的画面.例如,<QQ飞车>中,除了第三人称视图以外,游戏视图的右侧还有一个跑

Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机

Unity 游戏开发技巧集锦之制作一个望远镜与查看器摄像机 Unity中制作一个望远镜 本节制作的望远镜,在鼠标左键按下时,看到的视图会变大:当不再按下的时候,会慢慢缩小成原来的视图.游戏中时常出现的狙击手就是使用望远镜的一个例子,如图2-22所示.   图2-22  游戏中狙击手所看到的视图 制作望远镜的过程如下: (1)在Project视图里,创建一个C#脚本文件,命名为TelescopicView.打开这个脚本文件,并在里面添加下面的代码: 01     using UnityEngine

Unity 游戏开发技巧集锦之材质的应用的创建反射材质

Unity 游戏开发技巧集锦之材质的应用的创建反射材质 Unity中材质的应用 游戏中,大多数材质的应用都离不开纹理,而纹理本身是图片.所以,在学习本章时,最好在电脑上安装一个可以编辑图片的功能强大的软件,如Photoshop和GIMP.本章使用的是前者.另外,有些纹理需要包含Transparents通道,所以图片最好保存成可以存储相应信息的格式,例如,PSD和TGA. unity中创建反射材质 生活中,反射材质(reflective material)的实例有很多.例如,水面.光滑的金属.镜子

Unity 游戏开发技巧集锦之创建部分光滑部分粗糙的材质

Unity 游戏开发技巧集锦之创建部分光滑部分粗糙的材质 创建部分光滑部分粗糙的材质 生活中,有类物体的表面既有光滑的部分,又有粗糙的部分,例如丽江的石板路,如图3-17所示,石板的表面本来是粗糙的,但是在石板上面走的人多了,石板的一部分就变得光滑了.有时,游戏为了显得更加逼真,就需要模拟这样一种材质. 图3-17  兼具光滑和粗糙表面的丽江石板路 要制作部分光滑部分粗糙的材质,需要用到两种资源:拥有镜面着色器的材质和模拟了现实状况的纹理. Unity中创建并配置材质 在Project视图里,创

web前端开发笔试集锦(javascript篇1)转

原文出处: http://hi.baidu.com/jinhui04/item/eaf40034fa00def597f88dbc 1, 判断字符串是否是这样组成的,第一个必须是字母,后面可以是字母.数字.下划线,总长度为5-20 var reg = /^[a-zA-Z][a-zA-Z_0-9]{4,19}$/;reg.test("a1a__a1a__a1a__a1a__"); 2,截取字符串abcdefg的efg var str = "abcdefg";if (/e

android 开发问题集锦

android客户端 + python服务端(django框架)---问题集锦 1:很奇怪的事,Get和Post提交方式 各种方法试尽了,始终不成功,结果是URL问题, http://xxxx/xxxxx实在没有办法只好直接上html: <html> <head>test</head> <body> <form action="http://xxxx/xxxxx" method="post"> <in