Visual Studio.Net 技术Tip

文章类型:高级应用 日期:2005-5-31 作者:bestone 人气: 10

在网上Search资料的时候,时常能找到一些技术上的小技巧,可能一时之间用不上。如果看了就算了,过不了多久就会忘记。如果专门为此发一个贴,似乎又有些大材小用。不如把它们收集起来,说不定到了某个时候会起大作用呢。当然随着这些小tips的逐渐增多,post也会逐渐更新,也许以后可以根据内容分类,便于查找。

MainForm关闭之后保持程序运行

在Windows应用程序中,一般只有一个主程序入口点,而该窗口则为整个应用程序的主窗口。如果在主窗口中打开新窗口,主窗口只能隐藏,而不能关闭。不过,我们可以修改主程序入口点,使主窗口关闭之后程序仍然运行。

将Main改为:

static void Main()
{
  (new Form1()).Show();
  Application.Run(); // 启动独立的应用程序线程
}


这样Form1中的this.Close()就不会导致应用程序终止运行了,而且不需要Form1时,可以真正Close从而释放一些资源。不过,应用程序的终止就不要在其他地方控制了,比如在Form2的Closed事件中:

private void Form2_Closed(object sender, System.EventArgs e)
{
  Application.Exit();
}


在多文档应用程序中,往往需要在内部维护一个当前活动Form的列表,最后一个Form关闭时,再调用Application.Exit。

避免运用Assembly.LoadFrom

假设你想在另一个project中使用其它dll的assembly,如果它在引用列表中,而且assembly中至少有一个公用项(类、枚举等),那么不要用Assembly.LoadFrom,而用Type.Assembly。

例如,在dll(test.dll)中有一个叫做myclass1的公用的类,那么用下面的代码就可以得到该dll的assembly:

 // Need include the namespace if without using
 Assembly assem = typeof(myclass1).Assembly;

IP与主机名解析

使用System.Net可以实现与Ping命令行类似的IP解析功能,例如将主机名解析为IP或者反过来:

private string GetHostNameByIP(string ipAddress)
{
           IPHostEntry hostInfo = Dns.GetHostByAddress(ipAddress);
           return hostInfo.HostName;
}
private string GetIPByHostName(string hostName)
{
           System.Net.IPHostEntry hostInfo = Dns.GetHostByName(hostName);
           return hostInfo.AddressList[0].ToString();
}

ASP.NET中定制出错页面

在ASP.NET中原始的出错页面会暴露部分源代码,由此带来了潜在的安全隐患。ASP.NET允许应用程序出错时显示用户指定的页面,方法是在web.config文件中修改配置信息。

<? xml version="1.0" encoding="UTF-8" ?>
<configuration>
 
    <system.web>
        ......
        <customErrors mode="On" defaultRedirect="ErrorPage.htm" />
        ......
    </system.web>
 
</configuration>

上面的配置信息明确指定了当应用程序出错的时候显示用户定制的页面ErrorPage.htm。并且因为各个应用程序有自己独立的web.config配置文件,所以应用程序之间不会互相干扰。

其中,mode属性表示是否启用定制的用户页面,它可取三个值,如下所示:
On 启用定制的出错页面
Off 禁用定制的出错页面
RemoteOnly 启用定制的出错页面但仅展示给远程用户

defaultRedirect属性表示用户定制出错页面的文件名。

屏蔽CTRL-V

在WinForm中的TextBox控件没有办法屏蔽CTRL-V的剪贴板粘贴动作,如果需要一个输入框,但是不希望用户粘贴剪贴板的内容,可以改用RichTextBox控件,并且在KeyDown中屏蔽掉CTRL-V键,例子:

private void richTextBox1_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
 if(e.Control && e.KeyCode==Keys.V)
  e.Handled = true;
}

注意日期型变量值的改变

在将日期型变量作为传给后台程序的参数时请注意一个问题:

若client端的时区设置为北京时间,在client端传了一个日期型参数(如:dteRequestDate = nothing), 此时dterequestdate的值是:12:00:00 midnight, January 1, 0001 C.E.

若server端的时区设置为日本,server端接收到的参数dteRequestDate将自动转化为11:00:00 pm, January 1, 0001 C.E,此时若拿dterequestdate参数与checkdate(dim checkdate as datetime = nothing)比较,系统会认为dterequestdate<>checkdate。

判断一个程序是Debug 还是 Release(by 豆腐生活)

在Dotnet环境下,Framework提供了一个DebuggableAttribute 的class,可以通过如下的代码实现对其编译属性的判断。

   try
   {
      Assembly assm = Assembly.LoadFrom(filename);
      bool found = assm.GetCustomAttributes(typeof(DebuggableAttribute), false).Length > 0;
      buildType = found ? "Debug" : "Release";
   }
   catch
   {
      buildType = "<error>";
   }

转载于:https://www.cnblogs.com/dagon007/archive/2005/08/12/213108.html

ASP.NET开发经验积累(转发)以后会陆续放上新的相关推荐

  1. ASP.NET开发经验积累

    在开发过程中,通过摸索查资料,收集了一些值得提出来的经验: a) 相对于原来的for语句foreach具有更好的执行效率,foreach的平均花费时间只有for的30%.通过测试结果在for和fore ...

  2. [转载]ASP.NET开发经验积累

    在开发过程中,通过摸索查资料,收集了一些值得提出来的经验: a)      相对于原来的for语句foreach具有更好的执行效率,foreach的平均花费时间只有for的30%.通过测试结果在for ...

  3. 2014-07-23 利用ASP.NET自带控件实现单文件上传与下载

    效果图 上传文件页面: 下载文件页面:   1.母版页site.Master <%@ Master Language="C#" AutoEventWireup="t ...

  4. Asp.net MVC 1.0 RTM中实现文件上传

    Asp.net MVC 1.0 RTM中实现文件上传 在我们开始之前,你需要知道一个form以post方式上传文件的方式,你将要增加一个特别的enctype attribute到form标签上,为了这 ...

  5. Asp.net(c#)GridView分页时用图片显示上一页,下一页

    Asp.net(c#)GridView分页时用图片显示上一页,下一页 效果展示: 需要的两张图片:    详细代码: Code <%@ Page Language="C#"  ...

  6. ASP.NET Web API实现简单的文件下载与上传

    ASP.NET Web API实现简单的文件下载与上传.首先创建一个ASP.NET Web API项目,然后在项目下创建FileRoot目录并在该目录下创建ReportTemplate.xlsx文件, ...

  7. Asp.Net Web Api 部署------在云服务器IIS上部署Web Api程序

    Asp.Net Web Api 部署------在云服务器IIS上部署Web Api程序 本人Web Api程序框架选择的是.Net 5.0 一.在服务器上安装运行时RunTime,.Net 5 运行 ...

  8. 如何通过短信转发在iPad和Mac上发送和接收短信

    从iOS 7开始,Apple提供了文本转发服务,可以将通过iPhone的蜂窝网络接收的SMS消息推送到其他Apple设备. 使用同一网络,转发服务还允许您将iPad或Mac上的消息发送到其他电话号码, ...

  9. ASP.NET Core网站使用Nginx布署Linux上配置和发布及相关代码

    本文主要介绍使用ASP.NET Core开发的网站,运行布署在Linux上的方法,包括.NET Core SDK找安装,项目的发布和网站运行及开机自动启动及Nginx相关配置方法 . 原文地址:ASP ...

最新文章

  1. 原来AGILE就是这么一回事啊!
  2. java redis释放连接_redis在应用中使用连接不释放问题解决
  3. QT学习:图形视图Graphics View
  4. 四、Delphi 2009 泛型容器单元(Generics.Collections)[3]: TStackT
  5. 快速修改HTML5,HTML5无刷新修改URL(示例代码)
  6. 使用 Syslog 连接外部解决方案
  7. C语言fscanf和fprintf函数的用法详解
  8. mybatis 遍历map_Mybatis 缓存系统源码解析
  9. IT人必去的几大网站,国内外知名IT网站罗列!
  10. vue中supermap iserver绘制使用的插件安装
  11. 大数据精准运营需要注意的点
  12. Js 模式对话框(转)
  13. 【SQL精彩语句】按某一字段分组取最大(小)值所在行的数据
  14. 数字电子技术基础笔记
  15. oracle8i odac for c,ODAC for delphi
  16. linux透明桥,linux透明防墙(网桥模式).doc
  17. 大数据技术之Hive 第8章 函数 系统内置函数
  18. [Maven]讲讲它的构建生命周期和拉取 jar 包流程
  19. Joint Pose and Expression Modeling for Facial Expression Recognition 论文翻译
  20. c语言2级考试题下载,C语言二级考试题库

热门文章

  1. TensorFlow实现深度学习算法的教程汇集:代码+笔记
  2. 交流信号叠加直流偏置_高速数字电路设计通关五部曲(二):接口信号匹配与对接...
  3. mysql分组和where条件查询,mysql中where和having条件查询的区别
  4. java定时关机源码_【Java】定时关机源码
  5. gps84转换gcj02公式_【测绘基础】关于投影坐标和坐标转换,这几点你不得不知道!...
  6. 工厂设计模式(Factory Pattern)
  7. Cocos2dx------touch事件
  8. oracle 重启后 检查,oracle常规检查有哪些,oracle RAC中的一个节点经常重启?
  9. linux启动项目报连不上mysql_Linux运维常见故障及处理的 32 个妙计
  10. python 面向对象 类的内置方法