0


使用winfrom制作KTV排行榜点歌

大家好!新来乍到 这是我CSDN的第一篇文章 还请大家多多关照 !

最近学习winfrom制作了一个KTV的排行榜点歌系统 整个过程是下来感受是倍感充实 很有成就感!前台排行榜点歌 是点击排行榜后通过系统后台数据库的数据 来查询所有的热歌 来显示出所有的热榜歌曲!

以上图片是成品样式

功能:1.点击下一页和上一页可以实现翻页效果 页面数字也会随着页数的点击而变化

       2.下方按钮实现了 切歌 暂停 音量加减 播放MV 等功能

该页面所有功能主要分为两大类:

1.查询数据库中所有热门的歌曲 并显示才列表内

2.实现点歌功能 在播放的同事实现音量加减 切歌 暂停等功能

以下为详细步骤:

首先 在面板中拖动一个大的panel面板 在大panel面板中放入几个小的panel面板 并加上label和butten来显示歌名和点歌按钮

效果图:

这里我们插入了五个panel 首先则是要查询出共有多少条数据 然后就是要设定每一页五首歌曲 若

大于五首则跳转到下一页

   //查询总条数
        public int QuerySongCount()
        {
            DBHelper.OpenConnection();
            string sql = "select count(*) from song_info";
            SqlCommand command = new SqlCommand(sql,DBHelper.Connection);
            int  count = (int)command.ExecuteScalar();
            DBHelper.CloseConnection();
            return count;
        }
        //查询5条歌曲
        public void QuerySongList( int  page)
        {
            DataSet ds = new DataSet(); //临时仓库,数据集
            string sql = "select  top 5 * from song_info";
             if(page>1)
            {
                int start = (page - 1) * 5;
                 sql += " where song_id not in (select top " + start + " song_id from song_info)";
             }   
            
            SqlDataAdapter adapter = 
                new SqlDataAdapter(sql, DBHelper.Connection);
            //放入结果集
            adapter.Fill(ds, "song");
            //获取dataset临时仓库的值
            DataTable dt = ds.Tables["song"];
            int i = 0;
            foreach (DataRow row in dt.Rows)
            {
                string name = row["song_name"].ToString();
                string url = row["song_url"].ToString();
                //一行 的panel
                Panel  p = this.panel1.Controls[i] as Panel;
                //找到一行的panel中的第一个小控件label
                Label  l = p.Controls[1] as Label;
                l.Text = name; //歌曲名称赋值
                l.Tag = url;//Tag : 存放数据
                i++;
            }
        }

以上就是查询排行榜歌曲的数据

如此页并没有喜欢的歌曲 点击下一页按钮则进入下一页歌曲列表 点击上一页按钮则返回上一页

代码如下:

 //下一页
        private void button8_Click(object sender, EventArgs e)
        {
            //第几页
           string p=  this.label6.Text;
           int page = Convert.ToInt32(p) + 1;
           this.label6.Text = page.ToString();//改变label
           //查询page页的内容 从第几条开始查(page-1)*5
         //查询列表
           QuerySongList(page);

        }
        //上一页
        private void button8_Click(object sender, EventArgs e)
        {
            //第几页
            string p = this.label6.Text;
            int page = Convert.ToInt32(p) - 1;
            this.label6.Text = page.ToString();//改变label
            //查询page页的内容 从第几条开始查(page-1)*5
            //查询列表
            QuerySongList(page);

        }

下面将完成第二大步骤

实现 播放,暂停,音量加减,删除等功能

首先我们要先要把这几个功能的按钮拖出

1.播放

首先我们要把当前播放的第几首歌取值

设置判断 播放器状态改变事件 如果是end结束状态

设置判断 定时器:监控播放器的就绪状态,点击播放

代码如下:

 //播放
        private void button6_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;
            //把当前播放的第几首歌取值
            YiDian.curentPlay =  (int)btn.Tag;
            //panel  行
            Label  l = btn.Parent.Controls[3] as Label;
            //播放地址
            string url = l.Tag.ToString();
            this.axWindowsMediaPlayer1.URL = 
                    Application.StartupPath+ url;
        }
        //播放器状态改变事件
        private void axWindowsMediaPlayer1_StatusChange(object sender, EventArgs e)
        {
            //如果是end结束状态
            if (this.axWindowsMediaPlayer1.playState ==
                WMPLib.WMPPlayState.wmppsMediaEnded)
            {  //下一首
                this.axWindowsMediaPlayer1.URL = 
                   Application.StartupPath + 
                   YiDian.songList[YiDian.curentPlay+1].SongUrl;
            }
        }
        //定时器:监控播放器的就绪状态,点击播放
        private void timer1_Tick(object sender, EventArgs e)
        {
            if (this.axWindowsMediaPlayer1.playState ==
              WMPLib.WMPPlayState.wmppsReady)
            {  //播放
                this.axWindowsMediaPlayer1.Ctlcontrols.play();
            }
        }

2.暂停

点击暂停按钮歌曲暂停 再次点击则播放继续歌曲

代码如下

 //暂停
        private void button21_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;
            if (btn.Text == "暂停")
            {
                this.axWindowsMediaPlayer1.Ctlcontrols.pause();
                btn.Text = "播放";
            }
            else
            {
                this.axWindowsMediaPlayer1.Ctlcontrols.play();
                btn.Text = "暂停";
            }
            
        }

3.音量加减

点击音量+按钮歌曲音量加十分贝 点击音量-按钮歌曲音量减十分贝

代码如下:

//增大音量
        private void button22_Click(object sender, EventArgs e)
        {
            int v = this.axWindowsMediaPlayer1.settings.volume;
            this.axWindowsMediaPlayer1.settings.volume = v + 10;
        }
        //减小音量
        private void button22_Click(object sender, EventArgs e)
        {
            int v = this.axWindowsMediaPlayer1.settings.volume;
            this.axWindowsMediaPlayer1.settings.volume = v - 10;
        }

4.删除

如点击的歌曲不喜欢 点击删除按钮即可把歌曲删除

代码如下:

//删除
        private void button8_Click(object sender, EventArgs e)
        {
            Button btn = sender as Button;
            int x = (int)btn.Tag;
            YiDian.songList.RemoveAt(x);
            //重新加载数据
            ShowYiDian();
        }

以上就是排行榜点歌的所有内容了 如需观看成品图请向上翻页

感谢观看,谢谢大家!

标签: c#

本文转载自: https://blog.csdn.net/m0_71175791/article/details/126829069
版权归原作者 Daybreak.. 所有, 如有侵权,请联系我们删除。

“使用winfrom制作KTV排行榜点歌”的评论:

还没有评论