一个项目,一分收获;一个项目,一些资源。Ktv项目也是一样的,所以我想分享我的收获,让你们获得你需要的资源。
一. 那MyKTV点歌系统具体的功能有哪些呢?我们就来看看吧!
1.MyKTV前台功能:
01.歌星点歌 、拼音点歌 、数字点歌 、类型选择 、金榜排行
02.切歌 、点歌 、重唱和退出
2.MyKTV后台功能:
01.歌手管理 、歌曲管理 、设置资源路径
02.新增歌手、歌曲 ,查询歌手、歌曲信息,设置歌曲路径和退出
二. 功能已经概括的差不多了,就让我们一起来看看MyKTV的项目吧
四个辅助类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyKTV
{
class KTVUtil
{
public static string picturePath = "";
public static string songPath = "";
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyKTV
{
class PlayList
{
public static Song[] SongList=new Song[1000];
//当前播放的歌曲在数组中的索引(已点列表)
public static int SongIndex = 0;
//点一首歌,相当于将歌曲放在数组中
public static bool AddSong(Song song)
{
bool result = false;//记录添加歌曲是否成功
for (int i = 0; i < SongList.Length; i++)
{
if (SongList [i]==null)
{
SongList[i] = song;
result = true;
break;
}
}
return result;
}
//获取当前播放的歌曲 既然是获取当前播放的歌曲,返回值肯定是Song类型
public static Song GetPlaySong()
{
if (SongList [SongIndex]!=null)
{
return SongList[SongIndex];
}
else
{
return null;
}
}
//播放下一首
public static void Next()
{
if (SongList[SongIndex] != null && SongList[SongIndex].PlayStar== SongPlayState.again)
{
SongList[SongIndex].SongPlayed();
}
else
{
SongIndex++;
if (SongList[SongIndex]!=null)
{
SongList[SongIndex].SongPlayed();
}
}
}
//当前播放的歌曲名称
public static string PlaySongName()
{
string songname = "";
if (SongList[SongIndex]!=null)
{
songname=SongList[SongIndex].SongName;
}
return songname;
}
//下一首要播放的歌曲名称
public static string NextSongName()
{
string songname = "";
//if (SongList[SongIndex+1] != null&&SongList[0]!=null)
//{
// songname = SongList[SongIndex+1].SongName;
//}
//return songname;
if (SongList[0] != null && SongList[SongIndex + 1] == null)
{
songname = "待添加....";
return songname;
}
else
{
if (SongList[0] != null)
{
songname = SongList[SongIndex + 1].SongName;
return songname;
}
else
{
return string.Empty;
}
}
}
//重唱
public static void PalyAgain()
{
if (SongList[SongIndex]!=null)
{
SongList[SongIndex].SongAgain();
}
}
//切歌
public static void Cutsong()
{
//获取到当前播放的歌曲改变播放状态
if (SongList [SongIndex] != null)
{
SongList [SongIndex].PlayStar = SongPlayState.cut;
SongIndex++; //改变歌曲索引,播放下一首
}
}
////切歌
// public static void CutSong(int index)
// {
// //迭代变量,代表切歌位置
// int i;
// if (index==-1)//循环变量,代表切歌位置
// {
// i=SongIndex;
// }else
// {
// //从切歌的位置开始,将歌曲逐个向前移动一个位置
// i=index;
// }
// SongList[i].SongCut();
// while (SongList[i]!=null)
// {
// SongList[i]=SongList[i+1];
// i++;
// }
// }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyKTV
{
enum SongPlayState
{
//未播放,播放,重播,切歌
unplayer, played, again, cut
}
public class Song
{
private string songName;
public string SongName
{
get { return songName; }
set { songName = value; }
}
private string songUrl;
public string SongUrl
{
get { return songUrl; }
set { songUrl = value; }
}
//歌曲播放状态默认为未播放
private SongPlayState playStar = SongPlayState.unplayer;
internal SongPlayState PlayStar
{
get { return playStar; }
set { playStar = value; }
}
//将歌曲状态改为播放
public void SongPlayed()
{
this.PlayStar = SongPlayState.played;
}
//歌曲状态重播
public void SongAgain()
{
this.PlayStar = SongPlayState.again;
}
//歌曲状态切歌
public void SongCut()
{
this.PlayStar = SongPlayState.cut;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace MyKTV
{
class SqlUtil
{
public static string str = "data source=.;initial catalog=KTV;user id=sa;pwd=718191";
}
}
1.首先就是展现KTV的主界面,让我们先了解一下那些功能
01.实现各个共功能的主代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace MyKTV
{
public partial class frmMain : Form
{
public frmMain()
{
//InitializeComponent();
}
private void btnGX_Click(object sender, EventArgs e)
{
frmGXDG1 fg = new frmGXDG1();
fg.form1 = this;
fg.Show();
this.Hide();
}
//获取歌曲路径
public void SongPath()
{
string sql = "select resourcepath from resourcepath where resourceid=1";
SqlConnection con = new SqlConnection(SqlUtil.str);
SqlCommand com = new SqlCommand(sql, con);
try
{
con.Open();
KTVUtil.songPath= com.ExecuteScalar().ToString();
}
catch (Exception)
{
throw;
}
finally
{
con.Close();
}
}
private void frmMain_Load(object sender, EventArgs e)
{
//读取歌曲路径
SongPath();
//读取resourcepath表中的歌手图片
string sql = "select resourcepath from resourcepath where resourceid=2";
SqlConnection con = new SqlConnection(SqlUtil.str);
SqlCommand com = new SqlCommand(sql,con);
try
{
con.Open();
KTVUtil.picturePath=com.ExecuteScalar().ToString();
}
catch (Exception)
{
throw;
}
finally
{
con.Close();
}
}
private Song song;//当前播放的歌曲
//播放歌曲
public void PlaySong()
{
//调用播放当前歌曲方法
this.song = PlayList.GetPlaySong();
if (song!=null)
{
//改变播放状态为播放
this.song.SongPlayed();
Player2.URL = KTVUtil.songPath + "\\" + this.song.SongUrl;
txtIng.Text = PlayList.PlaySongName();
}
}
private void btnPY_Click(object sender, EventArgs e)
{
frmPY fp = new frmPY();
fp.Show();
}
private void btnSZ_Click(object sender, EventArgs e)
{
frmNum fn = new frmNum();
fn.Show();
}
private void btnLX_Click(object sender, EventArgs e)
{
frmType ft = new frmType();
ft.getSong(song);
ft.Show();
}
private void btnJB_Click(object sender, EventArgs e)
{
frmPaiHang fp = new frmPaiHang();
fp.Show();
}
private void toolStripButton3_Click(object sender, EventArgs e)
{
frmYiDian fy = frmYiDian.getFrm();
fy.Show();
}
private void panel2_Paint(object sender, PaintEventArgs e)
{
}
public static int cutSong = 0;
private void timer1_Tick(object sender, EventArgs e)
{
String nextSongName = PlayList.NextSongName();
txtNext.Text = nextSongName;
if (song == null)
{
PlaySong();
}
if (Player2.playState == WMPLib.WMPPlayState.wmppsStopped)
{
song = null;
PlayList.Next();
}
if (song != null && this.song.PlayStar == SongPlayState.cut)
{
this.song = null;
}
if (song != null)
{
if (this.song.PlayStar == SongPlayState.again)
{
this.song = null;
}
}
}
private void toolStripButton5_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void Player2_Enter(object sender, EventArgs e)
{
}
private void timNow_Tick(object sender, EventArgs e)
{
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("确定要切歌吗?", "", MessageBoxButtons.YesNo);
if (result==DialogResult.Yes)
{
PlayList.Cutsong();
}
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
PlayList.PalyAgain();
}
private void txtIng_TextChanged(object sender, EventArgs e)
{
//txtIng.Text = PlayList.PlaySongName();
}
private void txtNext_TextChanged(object sender, EventArgs e)
{
// txtNext.Text = PlayList.NextSongName();
}
private void timer2_Tick(object sender, EventArgs e)
{
}
//原唱伴唱(可惜没实现)
private void button1_Click(object sender, EventArgs e)
{
if (Player2.settings.balance==100)
{
Player2.settings.balance = -100;
}
else
{
Player2.settings.balance = 100;
}
}
}
}
2.歌星点歌(三个listview的集成窗体)
01.歌手类别
02.歌手地区
03.歌手姓名
04.代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace MyKTV
{
public partial class frmGXDG1 : Form
{
public frmGXDG1()
{
InitializeComponent();
}
public int a = 1;//三个listview标示
public int typeid = 0;
public string sex = "组合";
public frmMain form1 = null;
private void frmGXDG1_Load(object sender, EventArgs e)
{
this.listView2.Visible = false;
this.listView3.Visible = false;
}
//动态加载第二个listView五个图片
private void listView1_Click(object sender, EventArgs e)
{
a = 2;
if (listView1.SelectedItems[0]!=null)
{
listView2.Visible = true;
listView2.Location = listView1.Location;
//记录第一个listview所选类型
sex = listView1.SelectedItems[0].Tag.ToString();
}
string sql = "select singercountryid,singercountryname from singercountry";
SqlConnection con = new SqlConnection(SqlUtil.str);
SqlCommand com = new SqlCommand(sql, con);
try
{
con.Open();
SqlDataReader reader = com.ExecuteReader();
listView2.Items.Clear();
if (reader.HasRows)
{
int num = 0;
while (reader.Read())
{
ListViewItem lv = new ListViewItem();
lv.Text = reader["singercountryname"].ToString();
lv.Tag = Convert.ToInt32(reader["singercountryid"]);
lv.ImageIndex = num;
listView2.Items.Add(lv);
num++;
}
reader.Close();
}
}
catch (Exception)
{
throw;
}
finally
{
con.Close();
}
}
private void listView2_Click(object sender, EventArgs e)
{
a = 3;
if (listView2.SelectedItems[0]!=null)
{
listView2.Visible = false;
listView3.Visible = true;
listView3.Location = listView2.Location;
//保存所选择的地区编号
typeid = Convert.ToInt32(listView2.SelectedItems[0].Tag);
string result=sex;
if (sex!="组合")
{
result=sex ;
}
string sql = "select singername,singerphotourl,singerid from singerinfo where singercountryid='"+typeid+"' and singersex='"+result+"'";
SqlConnection con = new SqlConnection(SqlUtil.str);
SqlCommand com = new SqlCommand(sql,con);
try
{
con.Open();
SqlDataReader reader = com.ExecuteReader();
listView3.Items.Clear();//清空listview列表集合
if (reader.HasRows)
{
int num = 0;//添加的图片下标
imageList3.Images.Clear();//情况图片集合
while (reader.Read())
{
//读取图片地址
string path = KTVUtil.picturePath + "\\" + reader["singerphotourl"].ToString();
//把读取出来的图片添加到imagelist3上
imageList3.Images.Add(Image.FromFile(path));
ListViewItem lv = new ListViewItem();
lv.Text=reader["singername"].ToString();
lv.Tag = Convert.ToInt32(reader["singerid"]);
lv.ImageIndex = num;
listView3.Items.Add(lv);
num++;
}
}
}
catch (Exception)
{
throw;
}
finally
{
con.Close();
}
}
}
private void listView3_Click(object sender, EventArgs e)
{
string sql = @"select singername,songname,songurl,songid from singerinfo as s,songinfo as f
where s.singerid=f.singerid and singername='"+listView3.SelectedItems[0].Text+"'";
frmSongList fs = new frmSongList();
fs.sql = sql;
fs.Show();
}
private void tsbYD_Click(object sender, EventArgs e)
{
frmYiDian fy = frmYiDian.getFrm();
fy.Show();
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void tsbFH_Click(object sender, EventArgs e)
{
if (a==2)
{
a = 1;
this.listView1.Visible = true;
this.listView2.Visible = false;
this.listView3.Visible = false;
}else
if (a==3)
{
a = 2;
listView2.Visible = true;
listView1.Visible = false;
listView3.Visible = false;
}else
if (a==1)
{
form1.Show();
}
}
private void tsbTC_Click(object sender, EventArgs e)
{
form1.Show();
this.Close();
}
private void listView3_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void tsbCC_Click(object sender, EventArgs e)
{
PlayList.PalyAgain();
}
private void tsbQG_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("确定要切歌吗?", "", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
PlayList.Cutsong();
}
}
}
}
05.歌曲列表
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace MyKTV
{
public partial class frmSongList : Form
{
public string sql = "";
public int count = 0;
public frmSongList()
{
InitializeComponent();
}
private void frmSongList_Load(object sender, EventArgs e)
{
if (count != 0)
{
string numsql = "select singername,songname,songurl,songid from singerinfo as s,songinfo as f where s.singerid=f.singerid and songcount=" + count + "";
NewMethod(numsql);
}
else
{
NewMethod(sql);
}
}
//加载frmSongList控件里dgvList数据
private void NewMethod(string sql)
{
dgvList.AutoGenerateColumns = false;
SqlConnection con = new SqlConnection(SqlUtil.str);
SqlDataAdapter da = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
da.Fill(ds);
dgvList.DataSource = ds.Tables[0];
}
private void dgvList_CellClick(object sender, DataGridViewCellEventArgs e)
{
//点击某首歌曲,并将选中的歌曲名和路径赋给该对象()
Song song = new Song();
song.SongName = dgvList.SelectedRows[0].Cells[0].Value.ToString();
string a = dgvList.SelectedRows[0].Cells[2].Value.ToString();
song.SongUrl=a;
PlayList.AddSong(song);
string name = dgvList.SelectedRows[0].Cells[0].Value.ToString();
addCount(name);
}
public void addCount(string name)
{
SqlConnection con = new SqlConnection(SqlUtil.str);
string sql = "update songinfo set songplaycount+=1 where songname='"+name+"'";
SqlCommand com = new SqlCommand(sql,con);
try
{
con.Open();
int num = com.ExecuteNonQuery();
}
catch (Exception)
{
throw;
}
finally
{
con.Close();
}
}
private void dgvList_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
}
}
}
字数点歌
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MyKTV
{
public partial class frmNum : Form
{
public frmNum()
{
InitializeComponent();
}
int count = 0;
private void btn1_Click(object sender, EventArgs e)
{
count = Convert.ToInt32(btn1.Text);
frmSongList fs = new frmSongList();
fs.count = count;
fs.Show();
}
private void btn2_Click(object sender, EventArgs e)
{
count = Convert.ToInt32(btn2.Text);
frmSongList fs = new frmSongList();
fs.count = count;
fs.Show();
}
private void btn3_Click(object sender, EventArgs e)
{
count = Convert.ToInt32(btn3.Text);
frmSongList fs = new frmSongList();
fs.count = count;
fs.Show();
}
private void btn4_Click(object sender, EventArgs e)
{
count = Convert.ToInt32(btn4.Text);
frmSongList fs = new frmSongList();
fs.count = count;
fs.Show();
}
private void btn5_Click(object sender, EventArgs e)
{
count = Convert.ToInt32(btn5.Text);
frmSongList fs = new frmSongList();
fs.count = count;
fs.Show();
}
private void btn6_Click(object sender, EventArgs e)
{
count = Convert.ToInt32(btn6.Text);
frmSongList fs = new frmSongList();
fs.count = count;
fs.Show();
}
private void btn7_Click(object sender, EventArgs e)
{
count = Convert.ToInt32(btn7.Text);
frmSongList fs = new frmSongList();
fs.count = count;
fs.Show();
}
private void btn8_Click(object sender, EventArgs e)
{
count = Convert.ToInt32(btn8.Text);
frmSongList fs = new frmSongList();
fs.count = count;
fs.Show();
}
private void btn9_Click(object sender, EventArgs e)
{
count = Convert.ToInt32(btn9.Text);
frmSongList fs = new frmSongList();
fs.count = count;
fs.Show();
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
PlayList.PalyAgain();
}
private void toolStripButton1_Click(object sender, EventArgs e)
{
}
private void toolStripButton3_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("确定要切歌吗?", "", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
PlayList.Cutsong();
}
}
private void toolStripButton4_Click(object sender, EventArgs e)
{
frmYiDian fy = frmYiDian.getFrm();
fy.Show();
}
private void frmNum_Load(object sender, EventArgs e)
{
}
}
}
金榜排行
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace MyKTV
{
public partial class frmPaiHang : Form
{
public frmPaiHang()
{
InitializeComponent();
}
private void frmPaiHang_Load(object sender, EventArgs e)
{
Initial();
}
public void Initial()
{
SqlConnection con = new SqlConnection(SqlUtil.str);
string sql = "select singername,songname,songplaycount,songurl from singerinfo as s,songinfo as f where s.singerid=f.singerid order by songplaycount desc";
SqlCommand com = new SqlCommand(sql, con);
try
{
con.Open();
SqlDataReader reader = com.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
string songname = Convert.ToString(reader["songname"]);
string singername = Convert.ToString(reader["singername"]);
int count = Convert.ToInt32(reader["songplaycount"]);
string songurl = Convert.ToString(reader["songurl"]);
ListViewItem lv = new ListViewItem(songname);
lv.SubItems.Add(singername);
lv.SubItems.Add(count.ToString());
lv.SubItems.Add(songurl);
lvPH1.Items.Add(lv);
}
}
}
catch (Exception)
{
throw;
}
finally
{
con.Close();
}
}
private void toolStripButton4_Click(object sender, EventArgs e)
{
frmYiDian fy = frmYiDian.getFrm();
fy.Show();
}
private void lvPH_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void lvPH_Click(object sender, EventArgs e)
{
}
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void listView1_Click(object sender, EventArgs e)
{
Song song = new Song();
song.SongName = lvPH1.SelectedItems[0].SubItems[0].Text;
song.SongUrl = lvPH1.SelectedItems[0].SubItems[3].Text;
PlayList.AddSong(song);
frmSongList fs = new frmSongList();
string name = lvPH1.SelectedItems[0].SubItems[0].Text;
fs.addCount(name);
this.lvPH1.Items.Clear();
Initial();
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
PlayList.PalyAgain();
}
private void toolStripButton3_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("确定要切歌吗?", "", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
PlayList.Cutsong();
}
}
private void timer1_Tick(object sender, EventArgs e)
{
this.lvPH1.Items.Clear(); ;
Initial();
}
}
}
类型点歌
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MyKTV
{
public partial class frmType : Form
{
public frmType()
{
InitializeComponent();
}
private Song song;//当前播放的歌曲
public void getSong(Song so){
this.song=so;
}
private void lvType_SelectedIndexChanged(object sender, EventArgs e)
{
}
//类型点歌
private void lvType_Click(object sender, EventArgs e)
{
string sql = "select singername,songname,songurl,songid from singerinfo as s,songinfo as f where s.singerid=f.singerid and songtype='" +lvType.SelectedItems[0].Text+ "'";
frmSongList fs = new frmSongList();
fs.sql = sql;
fs.Show();
}
private void toolStripButton4_Click(object sender, EventArgs e)
{
frmYiDian fy = frmYiDian.getFrm();
fy.Show();
}
private void frmType_Load(object sender, EventArgs e)
{
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
PlayList.PalyAgain();
}
private void toolStripButton3_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("确定要切歌吗?", "", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
PlayList.Cutsong();
}
}
}
}
拼音点歌
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace MyKTV
{
public partial class frmPY : Form
{
public frmPY()
{
InitializeComponent();
}
public string py = "";
private void butA_Click(object sender, EventArgs e)
{
py += btnA.Text;
txtPY.Text = py;
select();
}
private void butB_Click(object sender, EventArgs e)
{
py += btnB.Text;
txtPY.Text = py;
select();
}
private void butC_Click(object sender, EventArgs e)
{
py += btnC.Text;
txtPY.Text = py;
select();
}
private void btnD_Click(object sender, EventArgs e)
{
py += btnD.Text;
txtPY.Text = py;
select();
}
private void btnE_Click(object sender, EventArgs e)
{
py += btnE.Text;
txtPY.Text = py;
select();
}
private void btnF_Click(object sender, EventArgs e)
{
py += btnF.Text;
txtPY.Text = py;
select();
}
private void btnG_Click(object sender, EventArgs e)
{
py += btnG.Text;
txtPY.Text = py;
select();
}
private void btnH_Click(object sender, EventArgs e)
{
}
private void btnI_Click(object sender, EventArgs e)
{
py += btnI.Text;
txtPY.Text = py;
select();
}
private void btnK_Click(object sender, EventArgs e)
{
py += btnK.Text;
txtPY.Text = py;
select();
}
private void btnL_Click(object sender, EventArgs e)
{
py += btnL.Text;
txtPY.Text = py;
select();
}
private void btnM_Click(object sender, EventArgs e)
{
py += btnM.Text;
txtPY.Text = py;
select();
}
private void btnN_Click(object sender, EventArgs e)
{
py += btnN.Text;
txtPY.Text = py;
select();
}
private void btnO_Click(object sender, EventArgs e)
{
py += btnO.Text;
txtPY.Text = py;
select();
}
private void btnP_Click(object sender, EventArgs e)
{
py += btnP.Text;
txtPY.Text = py;
select();
}
private void btnQ_Click(object sender, EventArgs e)
{
py += btnQ.Text;
txtPY.Text = py;
select();
}
private void btnR_Click(object sender, EventArgs e)
{
py += btnR.Text;
txtPY.Text = py;
select();
}
private void btnS_Click(object sender, EventArgs e)
{
py += btnS.Text;
txtPY.Text = py;
select();
}
private void btnT_Click(object sender, EventArgs e)
{
py += btnT.Text;
txtPY.Text = py;
select();
}
private void btnU_Click(object sender, EventArgs e)
{
py += btnU.Text;
txtPY.Text = py;
select();
}
private void btnV_Click(object sender, EventArgs e)
{
py += btnV.Text;
txtPY.Text = py;
select();
}
private void btnW_Click(object sender, EventArgs e)
{
py += btnW.Text;
txtPY.Text = py;
select();
}
private void btnX_Click(object sender, EventArgs e)
{
py += btnX.Text;
txtPY.Text = py;
select();
}
private void btnY_Click(object sender, EventArgs e)
{
py += btnY.Text;
txtPY.Text = py;
select();
}
private void btnZ_Click(object sender, EventArgs e)
{
py += btnZ.Text;
txtPY.Text = py;
select();
}
private void btnJ_Click(object sender, EventArgs e)
{
py += btnJ.Text;
txtPY.Text = py;
select();
}
private void btnPY_Click(object sender, EventArgs e)
{
int length = py.Length;
if (length>0)
{
py = py.Substring(0,length-1);
txtPY.Text = py;
select();
}
}
//拼音模糊查询
public void select() {
dgvPY.AutoGenerateColumns = false;
string sql = @"select singername,songname,songurl,songid from singerinfo as s,songinfo as f
where s.singerid=f.singerid and songab like '" + txtPY.Text + "%'";
SqlConnection con = new SqlConnection(SqlUtil.str);
SqlDataAdapter da = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
da.Fill(ds);
dgvPY.DataSource = ds.Tables[0];
}
private void txtPY_TextChanged(object sender, EventArgs e)
{
select();
}
private void btnH_Click_1(object sender, EventArgs e)
{
py += btnH.Text;
txtPY.Text = py;
select();
}
private void toolStripButton4_Click(object sender, EventArgs e)
{
frmYiDian fy = frmYiDian.getFrm();
fy.Show();
}
private void dgvPY_CellClick(object sender, DataGridViewCellEventArgs e)
{
Song song = new Song();
song.SongName = dgvPY.SelectedRows[0].Cells[0].Value.ToString();
string a = dgvPY.SelectedRows[0].Cells[2].Value.ToString();
song.SongUrl = a;
PlayList.AddSong(song);
}
private void frmPY_Load(object sender, EventArgs e)
{
}
private void panel1_Paint(object sender, PaintEventArgs e)
{
}
private void toolStripButton2_Click(object sender, EventArgs e)
{
PlayList.PalyAgain();
}
private void toolStripButton3_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("确定要切歌吗?", "", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
PlayList.Cutsong();
}
}
}
}
已点列表
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MyKTV
{
public partial class frmYiDian : Form
{
private frmYiDian()
{
InitializeComponent();
}
public static frmYiDian frm;
public static frmYiDian getFrm()
{
if (frm==null)
{
frm = new frmYiDian();
}
return frm;
}
public static int style = 1;
private void lvYiDian_SelectedIndexChanged(object sender, EventArgs e)
{
}
public void RefreshSongList()
{
lvYiDian.Items.Clear();//清空原列表
for (int i = 0; i < PlayList.SongList.Length; i++)
{
if (PlayList.SongList[i]!=null)
{
ListViewItem item = new ListViewItem(PlayList.SongList[i].SongName);
item.Tag = i;
//获取播放状态
string bofang = PlayList.SongList[i].PlayStar == SongPlayState.unplayer ? "未播放" : "已播放";
item.SubItems.Add(bofang);
lvYiDian.Items.Add(item);
}
}
}
private void frmYiDian_Load(object sender, EventArgs e)
{
style = 0;
RefreshSongList();
}
private void timer1_Tick(object sender, EventArgs e)
{
RefreshSongList();
}
private void frmYiDian_FormClosing(object sender, FormClosingEventArgs e)
{
style = 1;
}
private void 切歌ToolStripMenuItem_Click(object sender, EventArgs e)
{
DialogResult result = MessageBox.Show("确定要切歌吗?", "", MessageBoxButtons.YesNo);
if (result == DialogResult.Yes)
{
PlayList.Cutsong();
}
}
private void 重唱ToolStripMenuItem_Click(object sender, EventArgs e)
{
PlayList.PalyAgain();
}
}
}
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Data.SqlClient;namespace MyKTV{ public partial class frmMain : Form { public frmMain() { //InitializeComponent(); }
private void btnGX_Click(object sender, EventArgs e) { frmGXDG1 fg = new frmGXDG1(); fg.form1 = this; fg.Show(); this.Hide(); } //获取歌曲路径 public void SongPath() { string sql = "select resourcepath from resourcepath where resourceid=1"; SqlConnection con = new SqlConnection(SqlUtil.str); SqlCommand com = new SqlCommand(sql, con); try { con.Open(); KTVUtil.songPath= com.ExecuteScalar().ToString(); } catch (Exception) {
throw; } finally { con.Close(); } } private void frmMain_Load(object sender, EventArgs e) { //读取歌曲路径 SongPath(); //读取resourcepath表中的歌手图片 string sql = "select resourcepath from resourcepath where resourceid=2"; SqlConnection con = new SqlConnection(SqlUtil.str); SqlCommand com = new SqlCommand(sql,con); try { con.Open(); KTVUtil.picturePath=com.ExecuteScalar().ToString(); } catch (Exception) {
throw; } finally { con.Close(); } } private Song song;//当前播放的歌曲 //播放歌曲 public void PlaySong() { //调用播放当前歌曲方法 this.song = PlayList.GetPlaySong(); if (song!=null) { //改变播放状态为播放 this.song.SongPlayed(); Player2.URL = KTVUtil.songPath + "\\" + this.song.SongUrl; txtIng.Text = PlayList.PlaySongName(); } }
private void btnPY_Click(object sender, EventArgs e) { frmPY fp = new frmPY(); fp.Show(); }
private void btnSZ_Click(object sender, EventArgs e) { frmNum fn = new frmNum(); fn.Show(); }
private void btnLX_Click(object sender, EventArgs e) { frmType ft = new frmType(); ft.getSong(song); ft.Show(); }
private void btnJB_Click(object sender, EventArgs e) { frmPaiHang fp = new frmPaiHang(); fp.Show(); } private void toolStripButton3_Click(object sender, EventArgs e) {
frmYiDian fy = frmYiDian.getFrm(); fy.Show(); }
private void panel2_Paint(object sender, PaintEventArgs e) {
} public static int cutSong = 0; private void timer1_Tick(object sender, EventArgs e) { String nextSongName = PlayList.NextSongName(); txtNext.Text = nextSongName; if (song == null) { PlaySong(); } if (Player2.playState == WMPLib.WMPPlayState.wmppsStopped) { song = null; PlayList.Next(); } if (song != null && this.song.PlayStar == SongPlayState.cut) { this.song = null; } if (song != null) { if (this.song.PlayStar == SongPlayState.again) { this.song = null; } } } private void toolStripButton5_Click(object sender, EventArgs e) { Application.Exit(); }
private void Player2_Enter(object sender, EventArgs e) {
}
private void timNow_Tick(object sender, EventArgs e) { }
private void toolStripButton2_Click(object sender, EventArgs e) {
DialogResult result = MessageBox.Show("确定要切歌吗?", "", MessageBoxButtons.YesNo); if (result==DialogResult.Yes) { PlayList.Cutsong(); } }
private void toolStripButton1_Click(object sender, EventArgs e) { PlayList.PalyAgain(); }
private void txtIng_TextChanged(object sender, EventArgs e) { //txtIng.Text = PlayList.PlaySongName(); }
private void txtNext_TextChanged(object sender, EventArgs e) { // txtNext.Text = PlayList.NextSongName(); } private void timer2_Tick(object sender, EventArgs e) { } //原唱伴唱(可惜没实现) private void button1_Click(object sender, EventArgs e) { if (Player2.settings.balance==100) { Player2.settings.balance = -100; } else { Player2.settings.balance = 100; } } }}