- 时间:2017-11-21 作者:byzqy
介绍:
虽然上一版本基本实现了闹钟的功能,但是界面、功能、用户体验(简直谈不上体验^_^),以及众多的bug,所以升级,刻不容缓!
还是先看一下BetaV2.0的最终效果:
工具/原料:
(操作系统:Windos 7/10,开发工具:Visual Studio 2015,目标框架:.NET Framework 4)
Windows窗体(1个)
用到的控件:Label、ComboBox、Button、CheckBox、PictureBox
新增的控件:Panel(2个)
组件:Timer
素材:
①wav格式的音频文件(若干)
②txt格式文本文件(若干,用来存放歌曲对应歌词文本)
③jpg/gif格式图片(若干,用来显示歌曲对应的歌手)
④gif格式图片(1张,用来表示歌曲处于播放状态,替代上一版本的音符图片)
代码/逻辑:
用Windows小画家画了一张图,帮助理清代码结构。(右键在新标签页查看清晰原图!)
部分代码:(来自文件:Form.cs)
//自定方法:初始化 private void startup() //登录成功后初始化用户界面 { //time to string 界面显示当前时间 labelCurrentValue.Text = DateTime.Now.ToString(); //int to string 选择框默认显示时间(位数不足2位,前面补0.) comboBox1.Text = Convert.ToString(DateTime.Now.Hour).PadLeft(2, '0'); comboBox2.Text = Convert.ToString(DateTime.Now.Minute).PadLeft(2, '0'); comboBox3.Text = Convert.ToString(DateTime.Now.Second).PadLeft(2, '0'); //为界面和后台设置闹钟初始默认值 alarm_hour = DateTime.Now.Hour; alarm_minute = DateTime.Now.Minute; alarm_second = DateTime.Now.Second; alarm_time = 00 + ":" + 00 + ":" + 00; //time to string 闹钟显示时间 labelAlarmValue.Text = Convert.ToDateTime(alarm_time).ToString(); //默认铃声编号 comboBox4.Text = Convert.ToString(1); ringNumber = 1; label3.Text = ""; //检测文件夹内文件个数 string musicDirPath = Application.StartupPath + "\\music\\"; System.IO.DirectoryInfo dir = new System.IO.DirectoryInfo(musicDirPath); fileNum = dir.GetFiles().Length; //动态获取铃声数量选择列表 IList<string> list = new List<string>(); for (int a = 1; a <= fileNum; a++) { list.Add(a.ToString()); } comboBox4.DataSource = list; } //登录按钮 private void buttonLogin_Click(object sender, EventArgs e) { string name = textBoxName.Text.Trim(); string pwd = textBoxPwd.Text; if (checkBoxRememberPwd.Checked) { } else { if (name == "admin" && pwd == "admin") { //登录成功 panelLoginFace.Visible = false; panelUserFace.Visible = true; //开放窗体最大化按钮功能 this.MaximizeBox = true; //开放歌手和歌词控件显示功能 pictureBoxSinger.Visible = true; textBoxLyrics.Visible = true; //初始化用户界面 startup(); } else if(name == "" || pwd == "") { if (name == "") { MessageBox.Show("用户名不能为空!"); } else if(pwd == "") { MessageBox.Show("请输入密码!"); } } else { MessageBox.Show("用户名或密码输入错误,请重新输入!"); textBoxName.Clear(); textBoxPwd.Clear(); textBoxName.Focus();//让文本获得焦点 } } } //重置按钮 private void buttonReset_Click(object sender, EventArgs e) { textBoxName.Clear(); textBoxPwd.Clear(); textBoxName.Focus();//让文本获得焦点 } //鼠标光标进入控件区域 private void labelAuthor_MouseEnter(object sender, EventArgs e) { pictureBoxAuthor.Visible = true; } //鼠标光标离开控件区域 private void labelAuthor_MouseLeave(object sender, EventArgs e) { pictureBoxAuthor.Visible = false; }
实现的功能/存在的问题:
1、新增了登录界面,不过登录界面没有使用“窗体”,而是使用 Panel 控件的 Visible 属性,通过登录前显示,登录后隐藏来完成的!用户名和密码都是写死在code里的。虽然设置一个登录界面没什么意义,不过也算是向个性化和定制化迈出了一小步![尴尬脸^_^] Panel 的一个好处就是可以将众多的控件给包起来,方便统一管理:比如说移动,或者更换背景颜色!
2、在PictureBox控件种装入自己的微信二维码截图,也是一种时髦的介绍自己的方式。同样是通过 PictureBox 的 Visible 属性来实现的!为Label控件(“@作者”)添加 MouseEnter 事件和 MouseLeave 事件,在分别在两个事件中设置 PictureBox 的显示和隐藏。当鼠标光标悬停于 Label 上时,就会看到效果!
3、……so many bugs!ˇˍˇ 主要的铃声试听部分仍需改善~ (敬请期待BetaV3.0)
--The End!(本篇完)