睡到⑩②點
专注于ASP.NET Ajax
posts - 6,comments - 3,trackbacks - 1

摘要: 下面是我整理的一些userAgent大家先看看格式
//Firefox 1.0.X
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050225 Firefox/1.0.1
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7阅读全文
posted @ 2007-04-24 15:11 睡到⑩②點 阅读(3482) 评论(0) 编辑
摘要: JavaScript数组最多可以存放4294967295个项,如果要添加更多的项,则会发生异常。
Array对象覆盖了toString()方法和valueOf方法,返回特殊的字符串。

var aColors = ["red","green","blue"];
alert(aColors.toString());//输出red,green,blue
alert(aColors.valueOf());//输出red,green,blue

toLocaleString()方法的返回值也是由数组构成的字符串。

var aColors = ["red","green","blue"];
alert(aColors.toLocaleString());//输出red, green, blue大多数情况下toLocaleString()方法的输出值都与toString()方法的输出值相同,这里的输出值多了两个空格(在green和blue的前面各有一个),在IE6和FF都试过了,把语言区域和Internet语言首选阅读全文
posted @ 2007-04-14 14:14 睡到⑩②點 阅读(657) 评论(1) 编辑

.net中RegisterStartupScript与RegisterClientScriptBlock的区别

RegisterStartupScript(key, script)
RegisterClientScriptBlock(key, script)

 

  这两个方法的作用都是从前台向后台写脚本,且都接受两个字符串作为输入。第二个参数 script 是要插入到页面中的客户端脚本,包括 <script> 的起始标记和终止标记。第一个参数 key 是插入的客户端脚本的唯一标识符。

    这两个方法唯一的不同之处在于从“何处”发送脚本块。RegisterClientScriptBlock() 在 Web 窗体的开始处(紧接着 <form runat="server"> 标识之后)发送脚本块,而 RegisterStartupScript() 在 Web 窗体的结尾处(在 </form> 标识之前)发送脚本块。

      RegisterStartupScript() 用于添加要在加载页面后运行的脚本块,通过这种方法添加的脚本块位于 Web 窗体的结尾处,因为必须在脚本运行前定义脚本要修改的 HTML 元素。也就是说,如果您要使用客户端脚本将焦点设置到文本框,必须确保文本框的 HTML 标记位于设置该文本框的焦点的脚本之前。

      RegisterClientScriptBlock() 方法用于为响应客户端事件而执行的脚本代码。通过此方法发送的脚本块位于 Web 页面的开始处,因为这种方法不要求将脚本块置于所有 HTML 元素之后,它一般不使用文档内自定义的控件

转自http://joybing.cnblogs.com/archive/2005/05/20/159620.html

posted @ 2007-04-14 14:07 睡到⑩②點 阅读(410) 评论(0) 编辑

当调整控件的多个属性时,将先后使用 SuspendLayoutResumeLayout 方法取消多个 Layout 事件。例如,通常先调用 SuspendLayout 方法,然后设置控件的 SizeLocationAnchorDock 属性,最后调用 ResumeLayout 方法以使更改生效。

private void AddButtons()
{
   // Suspend the form layout and add two buttons.
   this.SuspendLayout();//控件的布局逻辑被挂起,直到调用 ResumeLayout 方法为止。
   Button buttonOK = new Button();
   buttonOK.Location = new Point(10, 10);
   buttonOK.Size = new Size(75, 25);
   buttonOK.Text = "OK";

   Button buttonCancel = new Button();
   buttonCancel.Location = new Point(90, 10);
   buttonCancel.Size = new Size(75, 25);
   buttonCancel.Text = "Cancel";
     
   this.Controls.AddRange(new Control[]{buttonOK, buttonCancel});
   this.ResumeLayout();
}

大量添加控件时会提高效率

posted @ 2007-04-14 14:04 睡到⑩②點 阅读(668) 评论(0) 编辑

onkeypress="if (event.keyCode < 45 || event.keyCode > 57) event.returnValue = false;"
-------------------------------
在文本框的 onkeypress事件中加入以上代码,屏蔽键盘事件中,输入值不是数字则返回为false

posted @ 2007-04-14 14:02 睡到⑩②點 阅读(336) 评论(0) 编辑

/// <summary>
 /// 计算程序的运行时间
 /// </summary>
 class StopWatch 
 {
  private int mintStart;

  public void start()
  {
   mintStart = Environment.TickCount;
  }

  public long elapsed()
  {
   return Environment.TickCount - mintStart;
  }
 }
在程序的开始和结尾处分别加上  StopWatch sw = new StopWatch();    sw.start();   和    sw.elapsed();
sw.elapsed();的返回值就是程序的运行时间。

上面的代码是.NET1.1中使用的 可以参考下面.NET2.0中的用法

《.NET v2.0 下的高精度计数器 —— Stopwatch
作者:First we try, then we trust  转自:http://www.cnblogs.com/zhenyulu/articles/25326.htm  

 

无论你是搞技术研究还是搞项目开发,高精度的时间测量在很多场合下都是必需的。xiaotie 在其《dotnet下时间精度测量》提到了一个 QueryPerfCounter,它对目前还在使用 Microsoft .NET Framework v1.1 的开发人员来说的确是一个好帮手。但若你已经用上了 Microsoft .NET Framework v2.0,那么 Stopwatch 将会成为你进行高精度时间测量的不二选择。

 

1. 测试 Stopwatch

这里,我借用一下 xiaotie 在《dotnet下时间精度测量》的测试代码,并给出对应的运行结果:

// Code #01

static void Test1()
{
    Stopwatch sw = new Stopwatch();
    sw.Start();
    sw.Stop();
    Console.WriteLine("Stopwatch 时间精度:{0}ms", sw.ElapsedMilliseconds);
}

// Output:
//
// Stopwatch 时间精度:0ms


static void Test2()
{
    Stopwatch sw = new Stopwatch();

    int loop = 10000;
    int exCount = 0;

    for (int i = 0; i < loop; i++)
    {
        sw.Reset();
        sw.Start();
        sw.Stop();
        if (sw.ElapsedMilliseconds != 0)
        {
            exCount++;
            Console.WriteLine("Stopwatch 时间精读异常:{0}ms", sw.ElapsedMilliseconds);
        }
    }

    Console.WriteLine("共进行{0}次 Stopwatch 的时间精度测试", loop);
    Console.WriteLine("其中{0}次 Stopwatch 的时间精度异常", exCount);
    Console.WriteLine("时间校准有效性{0}%", 100 - (100.0 * exCount) / loop);
}

// Output:
//
// 共进行10000次 Stopwatch 的时间精度测试
// 其中0次 Stopwatch 的时间精度异常
// 时间校准有效性100%


static void Test3()
{
    Stopwatch sw = new Stopwatch();

    for (int i = 0; i < 200; i++)
    {
        sw.Reset();
        sw.Start();
        sw.Stop();
        Console.WriteLine("Stopwatch 时间精度:{0}ms", sw.ElapsedMilliseconds);

        sw.Reset();
        sw.Start();
        int j = 0;
        for (j = 0; j < i; j++)
        {
            int l;
        }
        sw.Stop();
        Console.WriteLine("第{0}次循环,耗时{1}ms", i, sw.ElapsedMilliseconds);

        Console.WriteLine();
    }
}

// Partial output:
//
// Stopwatch 时间精度:0ms
// 第10次循环,耗时0ms
//
// Stopwatch 时间精度:0ms
// 第12次循环,耗时0ms
//
// Stopwatch 时间精度:0ms
// 第16次循环,耗时0ms
从测试结果中可以看到,Stopwatch 绝对能够满足挑剔的你!怎么样?手痒了吗?

 

2. 应用 Stopwatch

Stopwatch 位于 System.Diagnostics 命名空间中,它的使用方法非常简单,只要你会用一般的计时器,你就会使用它。

2.1 创建实例

你可以通过 new 或者 Stopwatch.StartNew() 来创建一个 Stopwatch 实例:

// Code #02

Stopwatch sw1 = new Stopwatch();
Stopwatch sw2 = Stopwatch.StartNew();
使用 StartNew() 会创建一个 Stopwatch 实例并马上开始计时,即等效于如下代码:

// Code #03

Stopwatch sw2 = new Stopwatch();
sw2.Start();
2.2 测量时间

// Code #04

sw1.Start();
// Do something here
sw2.Stop();
long elaspsedMilliseconds = sw1.ElaspedMilliseconds;
2.3 应用示例

微软官方提供了一系列示范程序用于演示 Visual Studio 2005,其中 Basic Class Library 部分带有一个 Stopwatch 的 Windows Forms 示例程序,你可以到 101 Samples for Visual Studio 2005 下载示例代码。

 

3. 深入 Stopwatch

Stopwatch 内部也调用了 QueryPerformanceCounter() 和 QueryPerformanceFrequency() 两个函数,与 QueryPerfCounter 不同的是,当 Stopwatch 检测到当前的系统和硬件不支持高精度的计数器时,它将转用我们所熟悉的 DateTime 做法。

Stopwatch 在其静态构造器中调用 QueryPerformanceFrequency(),透过该函数的返回值判断当前的系统和硬件是否支持高精度的计数器,并设置 IsHighResolution 属性的值。Stopwatch 内部用于计算时间间隔的主要方法都会根据 IsHighResolution 的值来选择合适的计算方法。有兴趣的话,你可以使用 Reflector 探究一下 Stopwatch 的内部。

 

posted @ 2007-04-14 13:40 睡到⑩②點 阅读(4033) 评论(3) 编辑