大家好!新来乍到 这是我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();
}
以上就是排行榜点歌的所有内容了 如需观看成品图请向上翻页
感谢观看,谢谢大家!