因为生肖是 每12年一个轮回,所以我设定一个起始值1900年(当然这个数是可以任意设的)
然后将用户输入的数减去1900得到的结果用12取余,如果刚好=0那就是鼠年,如果结果是正数,
那得到的结果就是生肖中的排列位数(即索引值),如果结果是负数,加上12就得到生肖中的排列位数
(因为我把生肖表的索引看作是0起始的);例如1902-1900 =2,取余得2,刚好是虎年,而1899-1900=-1取余得-1,
-1+12=11,也就得到猪年了,下面就是代码了:
//添加正则表达式引用
using System.Text.RegularExpressions;using System.Windows.Media.Imaging;namespace SelectAnimals
{ public partial class MainPage : PhoneApplicationPage {// 构造函数
public MainPage() { InitializeComponent(); }private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{ SelectBind(System.DateTime.Now.Year, tbNow,imgNow); }private void txtUserWrite_LostFocus(object sender, RoutedEventArgs e)
{ //只能输入0~9的数字 string reg = "^[0-9]*$"; if (Regex.IsMatch(this.txtUserWrite.Text, reg)) { try { if (!string.IsNullOrEmpty(this.txtUserWrite.Text)) { SelectBind(Convert.ToInt32(this.txtUserWrite.Text), tbResult, imgResult); } } catch (Exception) {MessageBox.Show("您输入的年份无效,请重新输入");
} } else { MessageBox.Show("您输入的年份无效,请重新输入");}
}/// <summary>
/// 生肖查询方法 /// </summary> /// <param name="num">年份</param> /// <param name="tbTxt">显示查询结果的控件</param> /// <param name="imgName">显示图片的控件</param> private void SelectBind(int num, TextBlock tbTxt,Image imgName) {int numx = (num - 1900) % 12;
//生肖的排序中的位数 (从0开始) int numy = 0;if (numx >= 0)//判断用户输入的是1900年前还是后
{ numy = numx; } else { numy = numx + 12; }switch (numy)
{ case 0: tbTxt.Text = "鼠(mouse)"; ImgBind(imgName, "/Imgs/鼠.png"); break; case 1: tbTxt.Text = "牛(ox)"; ImgBind(imgName, "/Imgs/牛.png"); break; case 2: tbTxt.Text = "虎(tiger)"; ImgBind(imgName, "/Imgs/虎.png"); break; case 3: tbTxt.Text = "兔(rabbit)"; ImgBind(imgName, "/Imgs/兔.png"); break; case 4: tbTxt.Text = "龙(dragon)"; ImgBind(imgName, "/Imgs/龙.png"); break; case 5: tbTxt.Text = "蛇(snake)"; ImgBind(imgName, "/Imgs/蛇.png"); break; case 6: tbTxt.Text = "马(horse)"; ImgBind(imgName, "/Imgs/马.png"); break; case 7: tbTxt.Text = "羊(sheep)"; ImgBind(imgName, "/Imgs/羊.png"); break; case 8: tbTxt.Text = "猴(monkey)"; ImgBind(imgName, "/Imgs/猴.png"); break; case 9: tbTxt.Text = "鸡(chicken)"; ImgBind(imgName, "/Imgs/鸡.png"); break; case 10: tbTxt.Text = "狗(dog)"; ImgBind(imgName, "/Imgs/狗.png"); break; case 11: tbTxt.Text = "猪(pig)"; ImgBind(imgName, "/Imgs/猪.png"); break; default: ImgBind(imgName, "/Imgs/icon.png"); this.tbResult.Text = null; break;}
}/// <summary>
/// 显示图片 /// </summary> /// <param name="imgName">显示图片的控件</param> /// <param name="uriStr">生肖图片地址</param> private void ImgBind(Image imgName,string uriStr) { Uri imgUri = new Uri(uriStr, UriKind.Relative); imgName.Source = new BitmapImage(imgUri); } }}
最后说下:本人只是个新手,最多算个菜鸟,如果你是高手请勿喷(留下你的建议或好方法就行o(∩_∩)o “求之不得”),如果你也和我一样是个菜菜,欢迎一起讨论
共享学习经验,一起进步,谢谢!