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