• C#


    • 时间: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;
            }
    View Code

    实现的功能/存在的问题:

    1、新增了登录界面,不过登录界面没有使用“窗体”,而是使用 Panel 控件的 Visible 属性,通过登录前显示,登录后隐藏来完成的!用户名和密码都是写死在code里的。虽然设置一个登录界面没什么意义,不过也算是向个性化和定制化迈出了一小步![尴尬脸^_^] Panel 的一个好处就是可以将众多的控件给包起来,方便统一管理:比如说移动,或者更换背景颜色!

    2、在PictureBox控件种装入自己的微信二维码截图,也是一种时髦的介绍自己的方式。同样是通过 PictureBox 的 Visible 属性来实现的!为Label控件(“@作者”)添加 MouseEnter 事件和 MouseLeave 事件,在分别在两个事件中设置 PictureBox 的显示和隐藏。当鼠标光标悬停于 Label 上时,就会看到效果!

    3、……so many bugs!ˇˍˇ 主要的铃声试听部分仍需改善~ (敬请期待BetaV3.0)


    --The End!(本篇完)

  • 相关阅读:
    列表方块与格式与布局
    框架与样式表的基本概念
    表单
    内容容器,常用标签
    CSS3
    表单验证
    练习题
    document对象
    windows对象
    函数
  • 原文地址:https://www.cnblogs.com/jswl/p/7873948.html
Copyright © 2020-2023  润新知