实现这样一个功能:
使用验证控件当验证后数据不符合条件则把当前输入焦点设置为错误的那个TextBox

解决方案 »

  1.   

    C#验证码的生成 Default2 .aspx.cs代码 ------------------------------------------------------------ using System; 
    using System.Drawing; 
    using System.Drawing.Imaging; public partial class Default2 : System.Web.UI.Page 

        protected void Page_Load(object sender, EventArgs e) 
        { 
            // 在此处放置用户代码以初始化页面 
            //RndNum是一个自定义函数 
            string VNum = RndNum(4); //这里的数字4代表显示的是4位的验证字符串! 
            Session["VNum"] = VNum; 
            ValidateCode(VNum); 
        } 
            //生成图像函数 
        private void ValidateCode(string VNum) 
        { 
            int Gheight = (int)(VNum.Length * 11.5); 
            //gheight为图片宽度,根据字符长度自动更改图片宽度 
            System.Drawing.Bitmap Img = new System.Drawing.Bitmap(Gheight, 20); 
            Graphics g = Graphics.FromImage(Img); 
            g.DrawString(VNum, new System.Drawing.Font("Arial", 10), new System.Drawing.SolidBrush(Color.Red), 3, 3); 
            //在矩形内绘制字串(字串,字体,画笔颜色,左上x.左上y)  
            System.IO.MemoryStream ms = new System.IO.MemoryStream(); 
            Img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 
            Response.ClearContent(); //需要输出图象信息 要修改HTTP头  
            Response.ContentType = "image/Jpeg"; 
            Response.BinaryWrite(ms.ToArray()); 
            g.Dispose(); 
            Img.Dispose(); 
            Response.End(); 
        }     //生成随机数函数中从Vchar数组中随机抽取 
        //字母区分大小写 
        public string RndNum(int VcodeNum) 
        { 
            string Vchar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z";         string[] VcArray = Vchar.Split(','); 
            string VNum = "";//由于字符串很短,就不用StringBuilder了 
            int temp = -1;//记录上次随机数值,尽量避免生产几个一样的随机数         //采用一个简单的算法以保证生成随机数的不同 
            Random rand = new Random(); 
            for (int i = 1; i < VcodeNum + 1; i++) 
            { 
                if (temp != -1) 
                { 
                    rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks)); 
                } 
                //int t =  rand.Next(35) ; 
                int t = rand.Next(35); 
                if (temp != -1 && temp == t) 
                { 
                    return RndNum(VcodeNum); 
                } 
                temp = t; 
                VNum += VcArray[t];         } 
            return VNum; 
        } 

    --------------------------------------------------- _Default .aspx代码 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > 
    <head runat="server"> 
        <title>Untitled Page</title> 
    </head> 
    <body> 
        <form id="form1" runat="server"> 
              <br /> 
            <asp:Image ID="Image1" runat="server" ImageUrl ="~/Default2.aspx" Height="24px" Width="112px" /><br /> 
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /><br /> 
             
        </form> 
    </body> 
    </html> 
    ------------------------------------------------------- _Default .aspx.cs代码 ---------------------------------------------- using System; 
    using System.Data; 
    using System.Configuration; 
    using System.Collections; 
    using System.Web; 
    using System.Web.Security; 
    using System.Web.UI; 
    using System.Web.UI.WebControls; 
    using System.Web.UI.WebControls.WebParts; 
    using System.Web.UI.HtmlControls; 
      using System.Drawing; 
    using System.Drawing.Imaging; public partial class _Default : System.Web.UI.Page 
    {     private void Page_Load(object sender, System.EventArgs e) 
        {     }     protected void Button1_Click(object sender, EventArgs e) 
        { 
            string VNum; 
            VNum = Session["VNum"].ToString(); 
            ViewState["VNum"] = VNum;            if (this.TextBox1.Text == ViewState["VNum"].ToString()) 
            { 
                Response.Write("验证码正确"); 
            } 
            else 
            { 
                Response.Write("验证码错误!"); 
            } 
           
        } 
    }   
      

  2.   

    使用验证控件当验证后数据不符合条件则把当前输入焦点设置为错误的那个TextBox
    关键是输入焦点