• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
wwl3325
博客园    首页    新随笔    联系   管理    订阅  订阅
录入学员的身份证后控件焦点转移时根据身份证号码获得生日和性别
自从接触了报名系统,认证系统,才知道身份证号码里面的信息大有乾坤,以18位的身份证来说,前面六位代表了你户籍所在地,第七位到第十四位代表了你的出生年月,第十五位到第十七为代表了你的性别(偶数为女,奇数为男),根据这一信息,我在系统开发的录入学员的身份证后控件焦点转移时根据身份证号码获得生日和性别,用C#写的代码如下:
 

 
/// <summary>
///在控件验证 textBox_IdentityCard 的 Validated事件中定义身份证号码的合法性并根据身份证号码得到生日和性别

/// </summary>       

       
private void textBox_IdentityCard_Validated(object sender, EventArgs e)

       {
           
try
           {
               
string identityCard = textBox_IdentityCard.Text.Trim();//获取得到输入的身份证号码

               
if (string.IsNullOrEmpty(identityCard))
               {
                   MessageBox.Show(
"身份证号码不能为空!");//身份证号码不能为空,如果为空返回
                   if (textBox_IdentityCard.CanFocus)
                   {

                       textBox_IdentityCard.Focus();
//设置当前输入焦点为textBox_IdentityCar

                   }
                   
return;
                   }
               
else
               {
                   
if (identityCard.Length != 15 && identityCard.Length != 18)//身份证号码只能为15位或18位其它不合法
                   {

                       MessageBox.Show(
"身份证号码为15位或18位,请检查!");

                       
if (textBox_IdentityCard.CanFocus)
                       {
                           textBox_IdentityCard.Focus();
                       }
                       
return;
                    }
               }

               
string birthday = "";
               
string sex = "";
               
if (identityCard.Length == 18)//处理18位的身份证号码从号码中得到生日和性别代码
              {
                   birthday 
= identityCard.Substring(6, 4) + "-" + identityCard.Substring(10, 2) + "-" + identityCard.Substring(12, 2);
                   sex 
= identityCard.Substring(14, 3);
               }
               
if (identityCard.Length == 15)
               {

                   birthday 
= "19" + identityCard.Substring(6, 2) + "-" + identityCard.Substring(8, 2) + "-" + identityCard.Substring(10, 2);
                   sex 
= identityCard.Substring(12, 3);
               }
               textBox_Birthday.Text 
= birthday;
               
if (int.Parse(sex) % 2 == 0)//性别代码为偶数是女性奇数为男性
               {
                   
this.comboBox_Sex.Text = "女";

              }
               
else
               {
                   
this.comboBox_Sex.Text = "男";
               }
           }
           
catch (Exception ex)
           {
               MessageBox.Show(
"身份证号码输入有误");
               
if (textBox_IdentityCard.CanFocus)
               {
                   textBox_IdentityCard.Focus();
               }
               
return;
           }
       }

posted on 2009-03-02 15:24  儱  阅读(400)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3