年月日编程问题,急救 急救!,
一)
在一个textBox1里面输入小写日期,则在textBox1里面大写的同时,把 年 月  日 分别留一个位置出来
(比如 二零一一   十二   零一);同时在textBox2里面是小写 比如(2011   12   01)
这个功能怎么实现,小弟着急了,大哥们帮帮忙吧,高分求助!

解决方案 »

  1.   

    DDTprivate void textBox1_TextChanged(object sender, EventArgs e)
            {
                string str = this.textBox1.Text;
                string change = "";
                string sb = "";
                char[] s = str.ToCharArray();
                foreach (char c in s)
                {
                    switch (c.ToString())
                    {
                        case "0":
                            change = "零";
                            break;
                        case "1":
                            change = "一";
                            break;                    case "2":
                            change = "二";
                            break;
                        case "3":
                            change = "三";
                            break;
                        case "4":
                            change = "四";
                            break;                    case "5":
                            change = "五";
                            break;
                        case "6":
                            change = "六";
                            break;
                        case "7":
                            change = "七";
                            break;
                        case "8":
                            change = "八";
                            break;
                        case "9":
                            change = "九";
                            break;
                        case " ":
                            change = " ";
                            break;
                    }
                    sb += change;
                }
                this.textBox2.Text = sb;
            }
      

  2.   

    经过测试,应该符合楼主的需求
    在Form上放一个MaskedTextBox和 TextBox控件即可,MaskedTextBox用于输入数字,TextBox显示汉字
        public partial class Form1 : Form
        {
            private DateFormat dateFormatChecker = null;
            private const char Sep = ' ';
            private readonly string[] ChineseChar = new string[] { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十" };        public Form1()
            {
                InitializeComponent();
                this.maskedTextBox1.Mask = "0000 00 00";
                this.maskedTextBox1.ResetOnPrompt = false;
                this.maskedTextBox1.ResetOnSpace = false;
                maskedTextBox1.ValidatingType = typeof(DateFormat);
            }        private void maskedTextBox1_TypeValidationCompleted(object sender, TypeValidationEventArgs e)
            {
                if (e.IsValidInput)
                {
                    label1.Text = string.Empty;
                    dateFormatChecker = e.ReturnValue as DateFormat;
                }
                else
                {
                    // error
                    dateFormatChecker = null;
                    label1.Text = "error date format";
                }
            }        private void maskedTextBox1_MaskInputRejected(object sender, MaskInputRejectedEventArgs e)
            {
                label1.Text = "input rejected: error date format";
            }        private void maskedTextBox1_TextChanged(object sender, EventArgs e)
            {
                string input = maskedTextBox1.Text;
                string[] parts = input.Split(' ');            string output = string.Empty;            if (parts.Length == 0)
                {
                    textBox1.Text = output;
                    return;
                }            // 处理 年
                if (parts.Length > 0)
                {
                    string year = parts[0];
                    for (int i = 0; i < year.Length; ++i)
                    {
                        output += ChineseChar[int.Parse(year[i].ToString())];
                    }            }            // 处理 月
                if (parts.Length > 1)
                {
                    output += Sep.ToString();                string month = parts[1];
                    output += ConvertDigitToChineseForMonthOrDay(month);
                }            // 处理 日
                if (parts.Length > 2)
                {
                    output += Sep.ToString();                string month = parts[2];
                    output += ConvertDigitToChineseForMonthOrDay(month);
                }            textBox1.Text = output;
            }        // 将月份或者日期转换成汉字显示的形式
            private string ConvertDigitToChineseForMonthOrDay(string s)
            {
                int len = s.Length;
                if (len == 0)
                    return string.Empty;            string retValue = string.Empty;
                int val = int.Parse(s);
                // 获取10位的值
                int ten = val / 10;
                switch (ten)
                {
                    case 0:
                        retValue += ChineseChar[0];
                        break;                case 1:
                        retValue += ChineseChar[10];
                        break;                default:
                        retValue += ChineseChar[ten];
                        retValue += ChineseChar[10];
                        break;
                }            // 获取个位的值
                int one = val - 10 * (val / 10);
                if (one != 0)
                    retValue += ChineseChar[one];            return retValue;
            }    }    /// <summary>
        /// class used to validate user input
        /// </summary>
        public class DateFormat
        {
            private int mYear;
            private int mMonth;
            private int mDay;        private const char Sep = ' ';        public int Year
            {
                get { return mYear; }
                set { mYear = value; }
            }        public int Month
            {
                get { return mMonth; }
                set { mMonth = value; }
            }
            public int Day
            {
                get { return mDay; }
                set { mDay = value; }
            }        public DateFormat(int year, int month, int day)
            {
                Year = year;
                Month = month;
                Day = day;
            }        public override string ToString()
            {
                return string.Format("{0}{1}{2}{3}{4}", Year.ToString(), Sep, Month.ToString(), Sep, Day.ToString());
            }        public static DateFormat Parse(string input)
            {
                string[] parts = input.Split(Sep);
                if (parts.Length != 3)
                {
                    throw new ArgumentException("invalid date format");
                }
                else
                {
                    int year = 0;
                    int month = 0;
                    int day = 0;
                    if (int.TryParse(parts[0], out year) &&
                        int.TryParse(parts[1], out month) &&
                        int.TryParse(parts[2], out day))
                    {
                        try
                        {
                            DateTime dt = new DateTime(year, month, day);                        return new DateFormat(year, month, day);
                        }
                        catch (Exception ex)
                        {
                            // invalid day
                            throw;
                        }
                    }
                    throw new ArgumentException("invalid date format");
                }
            }
        }