你的位置:首页 > ASP.net教程

[ASP.net教程]KTV点歌系统


KTV点歌系统————北大青鸟  指导老师:原玉明

 

 1 public enum SongPlayState 2   { 3     //未播放,播放,重播,切歌 4     unplayed, played, again, cut 5   } 6   public class Song 7   { 8     public string SongName { get; set; }//歌曲名称 9 10     public string SongURL { get; set; }//歌曲路径11 12    13     public SongPlayState playState = SongPlayState.unplayed;//默认未播放14     internal SongPlayState PlayState { get; set; }15 16     //状态为已播17     public void SetSongPlayed()18     {19       this.PlayState = SongPlayState.played;20     }21     //重唱22     public void SetPlayAgain()23     {24       this.playState = SongPlayState.again;25     }26    //切歌27     public void SetSongCut()28     {29       this.playState = SongPlayState.cut;30     }

 

 

PlayList类中实现切歌 重唱 下一首 等.....

 1 public class PlayList 2   { 3     //定义一个长度为、50的歌曲数组,默认存储50首歌曲 4     public static Song[] SongList = new Song[50]; 5     public static int SongIndex = 0;//当前播放的歌曲在数组中的索引 6     //点播一首歌曲,其实是将歌曲对象添加到歌曲数组中 7     public static bool AddSong(Song song) 8     { 9       bool success = false;//记录添加歌曲是否成功 10       for (int i = 0; i < SongList.Length; i++) 11       { 12         //找到数组中第一个为null的位置 13         if (SongList[i] == null) 14         { 15           SongList[i] = song; 16           success = true; 17           break; 18         } 19       } 20       return success; 21     } 22     //获取当前播放的歌曲::既然是获取当前播放的歌曲,返回值肯定是Song类型 23     public static Song GetPlaySong() 24     { 25       if (SongList[SongIndex] != null) 26       { 27         return SongList[SongIndex]; 28       } 29       else 30       { 31         return null; 32       } 33     } 34     /// <summary> 35     /// 播放下一首 36     /// </summary> 37     public static void MoveOn() 38     { 39       if (SongList[SongIndex] != null && SongList[SongIndex].PlayState == SongPlayState.again) 40       { 41         SongList[SongIndex].SetSongPlayed(); 42       } 43       else 44       { 45         SongIndex++; 46       } 47     } 48     /// <summary> 49     /// 当前播放的歌曲名称 50     /// </summary> 51     /// <returns>歌曲名称</returns> 52     public static string PlayingSongName() 53     { 54       string songName = ""; // 歌曲名称 55       if (SongList[SongIndex] != null) 56       { 57         songName = SongList[SongIndex].SongName; 58       } 59  60       return songName; 61     } 62     /// <summary> 63     /// 下一首要播放的歌曲名称 64     /// </summary> 65     /// <returns>歌曲名称</returns> 66     public static string NextSongName() 67     { 68       string songName = ""; // 歌曲名称 69       if (SongList[SongIndex + 1] != null) 70       { 71         songName = SongList[SongIndex + 1].SongName; 72       } 73  74       return songName; 75     } 76     //重放当前歌曲 77     public static void PlayAgain() 78     { 79       if (SongList[SongIndex] != null) 80       { 81         SongList[SongIndex].SetPlayAgain(); 82       } 83     } 84     //切歌 85     public static void CutSong(int index) 86     { 87       int i;//循环变量,代表切歌的位置 88       if (index == -1)//循环变量,代表切割的位置 89       { 90         i = SongIndex; 91       } 92       else 93       { 94         i = index;//从切歌的位置开始,将歌曲逐个向前移一个位置 95       } 96       SongList[i].SetSongCut(); 97       while (SongList[i] != null) 98       { 99         SongList[i] = SongList[i + 1];100         i++; 101         //如果达到数组最后一个元素,就将最后一个元素指向空102         if (i == SongList.Length)103         {104           SongList[i] = null;105         }106       }107     }108   }

 实现歌手点歌

 1 public FrmMain frmMain; 2     string connectionStr = "server=.;database=MyKTV;uid=sa"; 3     DBHelp db = new DBHelp(); 4     private SqlConnection con; 5     //首先要查出数据库中的图片路径和歌曲路径 6     private void FrmCountry_Load(object sender, EventArgs e) 7     { 8        9       con = new SqlConnection(connectionStr); 10       con.Open(); 11       string sql = "select resource_path from resource_path where resource_id=1"; 12  13       string sqlsongpath = "select resource_path from resource_path where resource_id=2"; 14       SqlCommand cmd = new SqlCommand(sql,con); 15  16       SqlCommand cmd2 = new SqlCommand(sqlsongpath, con); 17       KtvUnit.ImagePath = cmd.ExecuteScalar().ToString(); 18       KtvUnit.SongPath = cmd2.ExecuteScalar().ToString(); 19       con.Close(); 20     } 21     //点击歌手男女或组合时 22     private void LvOne_Click(object sender, EventArgs e) 23     { 24       25       LoadSingerArea(); 26     } 27     public string singer_type { get; set; } 28     private void LoadSingerArea() 29     { 30       if (this.LvOne.SelectedItems[0] != null) 31       { 32         LvOne.Visible = false; 33         LvTwo.Location = LvOne.Location; 34         LvTwo.Dock = DockStyle.Fill; 35         LvTwo.Visible = true; 36         this.singer_type=Convert.ToString(LvOne.SelectedItems[0].Text); 37       } 38       39       con = new SqlConnection(connectionStr); 40       string sql = "select singertype_id,singertype_name from singer_type"; 41       SqlCommand cmd = new SqlCommand(sql, con); 42       SqlDataReader dr; 43       try 44       { 45         con.Open(); 46         LvTwo.Items.Clear(); 47         dr = cmd.ExecuteReader();        48         if (dr.HasRows) 49         { 50           int index = 0; 51           while (dr.Read()) 52           { 53             ListViewItem lvItem = new ListViewItem(); 54             int typeid = Convert.ToInt32(dr["singertype_id"]); 55             string typename = Convert.ToString(dr["singertype_name"]); 56             lvItem.Text = typename; 57             lvItem.Tag = typeid; 58             lvItem.ImageIndex = index; 59             LvTwo.Items.Add(lvItem); 60             index++; 61           } 62         } 63         dr.Close(); 64       } 65       catch (Exception ex) 66       { 67  68         MessageBox.Show("系统出现异常" + ex.Message); 69       } 70       finally  71       { 72         con.Close(); 73       } 74     } 75     public string singertype_id { get; set; } 76     /// <summary> 77     /// 点击地区类型时 78     /// </summary> 79     /// <param name="sender"></param> 80     /// <param name="e"></param> 81     private void LvTwo_Click(object sender, EventArgs e) 82     { 83       if (this.LvTwo.SelectedItems[0] != null) 84       { 85         LvTwo.Visible = false; 86         Lvthree.Location = LvTwo.Location; 87         Lvthree.Dock = DockStyle.Fill; 88         Lvthree.Visible = true; 89         this.singertype_id = Convert.ToString(LvTwo.SelectedItems[0].Tag); 90       } 91       string result = singer_type; 92       if (result != "组合") 93       { 94         result = singer_type == "女歌手" ? "女" : "男"; 95       } 96       con = new SqlConnection(connectionStr); 97       string sql =string.Format( "select singer_id,singer_name,singer_photo_url from singer_info where singertype_id={0} and singer_Sex='{1}'",singertype_id,result); 98       SqlCommand cmd = new SqlCommand(sql, con); 99       SqlDataReader dr;100       try101       {102         con.Open();103         int index = 0;104         Lvthree.Items.Clear();105         imageList3.Images.Clear();106         dr = cmd.ExecuteReader();107         if (dr.HasRows)108         { 109           while (dr.Read())110           {            111             string photoURL =KtvUnit.ImagePath + Convert.ToString(dr["singer_photo_url"]);112             //先给ImageList填充图片113             imageList3.Images.Add(Image.FromFile(photoURL));114             ListViewItem lvItem = new ListViewItem();115             lvItem.Text = Convert.ToString(dr["singer_name"]);116             lvItem.Tag = Convert.ToString(dr["singer_id"]);117             lvItem.ImageIndex = index;118             Lvthree.Items.Add(lvItem);119             index++;120           }121         }122         dr.Close();123       }124       catch (Exception ex)125       {126 127         MessageBox.Show("系统出现异常" + ex.Message);128       }129       finally130       {131         con.Close();132       }133     }134 135     public void SongList()136     {137       //读取数据库,读出该歌手的所有歌曲138 139       StringBuilder sb = new StringBuilder();140       //拼接SQL语句141       sb.AppendFormat("select song_id,song_name,song_url,singer_name from song_info,singer_info where singer_name='{0}' and song_info.singer_id={1}", Lvthree.SelectedItems[0].Text, Convert.ToInt32(Lvthree.SelectedItems[0].Tag));142       FrmSongList songList = new FrmSongList();143      144       songList.Sql = sb.ToString();145       songList.Previous = KtvClient.PrevioisForm.Singer;//指定返回的窗体是按歌手点歌146       songList.ShowDialog();147       this.Close();148 149     }150 151     private void Lvthree_Click(object sender, EventArgs e)152     {153       SongList();154     }155 156     private void tsSingerMain_Click(object sender, EventArgs e)157     {158       FrmMain main = new FrmMain();159       main.Show();160       this.Hide();161     }162 163     private void tsSingerBack_Click(object sender, EventArgs e)164     {165       if (this.LvOne.Visible==true)166       {167         FrmMain man = new FrmMain();168         man.Show();169         this.Hide();170       }171       else if (this.LvTwo.Visible==true)172       {173         this.LvTwo.Visible = false;174         this.LvOne.Visible = true;175       }176       else if (this.Lvthree.Visible==true)177       {178         this.Lvthree.Visible = false;179         this.LvTwo.Visible = true;180       }181     }182 183     private void tsSingerCut_Click(object sender, EventArgs e)184     {185       PlayList.CutSong(-1);186     }187 188     private void tsSingerAgain_Click(object sender, EventArgs e)189     {190       PlayList.PlayAgain();191     }192 193     private void tsSingerYidian_Click(object sender, EventArgs e)194     {195       FrmPlayList frm = new FrmPlayList();196       frm.Show();197     }

拼音点歌

 

 1 public FrmMain frmMain; 2     [DllImportAttribute("user32.dll")] 3     private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags); 4     DBHelp db = new DBHelp(); 5     string connectionStr = "server=.;database=MyKTV;uid=sa"; 6     private void FrmPinYin_Load(object sender, EventArgs e) 7     { 8       AnimateWindow(this.Handle, 300, FrmMain.AW_SLIDE + FrmMain.AW_VER_POSITIVE); 9       SqlConnection con = new SqlConnection(connectionStr); 10       con.Open(); 11       db.connection();   12       string sqlsongpath = "select resource_path from resource_path where resource_id=2"; 13       SqlCommand cmd = new SqlCommand(sqlsongpath, con); 14       KtvUnit.SongPath = cmd.ExecuteScalar().ToString(); 15     } 16     private void btnSearch_Click(object sender, EventArgs e) 17     { 18       string PinYin = this.txtPinYin.Text; 19       //判断是否是中文 还是拼音 20       if (!Regex.IsMatch(this.txtPinYin.Text, @"^[\u4e00-\u9fa5]+$")) 21       { 22         StringBuilder PY = new StringBuilder(PinYin); 23         24         for (int i = 0; i <= PY.Length; i++) 25         { 26           PY.Insert(i, "%"); 27           i++; 28         } 29         string sql = string.Format("SELECT song_name,singer_name FROM  dbo.singer_info, dbo.song_info WHERE dbo.singer_info.singer_id=dbo.song_info.singer_id AND song_ab LIKE '{0}'", PY); 30         this.dgvPinYinInfo.DataSource = db.dataTable(sql,"PY"); 31       } 32       else 33       { 34         StringBuilder ZW = new StringBuilder(PinYin); 35         for (int i = 0; i < ZW.Length; i++) 36         { 37           ZW.Insert(i,"%"); 38           i++; 39         } 40         string sql = string.Format("SELECT song_name,singer_name FROM  dbo.singer_info, dbo.song_info WHERE dbo.singer_info.singer_id=dbo.song_info.singer_id AND song_name LIKE '{0}'", ZW); 41         this.dgvPinYinInfo.DataSource = db.dataTable(sql, "PY"); 42       } 43     } 44  45     private void dgvPinYinInfo_DoubleClick(object sender, EventArgs e) 46     { 47       string songname = this.dgvPinYinInfo.SelectedRows[0].Cells["song_name"].Value.ToString(); 48       DBHelp db = new DBHelp(); 49       db.connection(); 50       string sql = string.Format("SELECT song_name,singer_name,song_url,song_photo_url FROM dbo.song_info,dbo.singer_info where dbo.singer_info.singer_id=dbo.song_info.singer_id and song_name='{0}'",songname); 51  52       SqlDataReader reader = db.ExecuteReaders(sql.ToString()); 53  54       Song song; 55       if (reader.Read()) 56       { 57         song = new Song(); 58         song.SongName = reader["song_name"].ToString(); 59         song.SongURL = KtvUnit.SongPath+reader["song_url"].ToString(); 60         PlayList.AddSong(song);        61       } 62       reader.Close(); 63     } 64  65     private void pictureBox2_Click(object sender, EventArgs e) 66     { 67       textBox1.Text = textBox1.Text + "a"; 68     } 69  70     private void pictureBox1_Click(object sender, EventArgs e) 71     { 72       textBox1.Text = textBox1.Text + "b"; 73     } 74  75     private void pictureBox3_Click(object sender, EventArgs e) 76     { 77       textBox1.Text = textBox1.Text + "c"; 78     } 79  80     private void pictureBox4_Click(object sender, EventArgs e) 81     { 82       textBox1.Text = textBox1.Text + "d"; 83     } 84  85     private void pictureBox5_Click(object sender, EventArgs e) 86     { 87       textBox1.Text = textBox1.Text + "e"; 88     } 89  90     private void pictureBox6_Click(object sender, EventArgs e) 91     { 92       textBox1.Text = textBox1.Text + "f"; 93     } 94  95     private void pictureBox7_Click(object sender, EventArgs e) 96     { 97       textBox1.Text = textBox1.Text + "g"; 98     } 99 100     private void pictureBox8_Click(object sender, EventArgs e)101     {102       textBox1.Text = textBox1.Text + "h";103     }104 105     private void pictureBox9_Click(object sender, EventArgs e)106     {107       textBox1.Text = textBox1.Text + "i";108     }109 110     private void pictureBox10_Click(object sender, EventArgs e)111     {112       textBox1.Text = textBox1.Text + "j";113     }114 115     private void pictureBox26_Click(object sender, EventArgs e)116     {117       textBox1.Text = textBox1.Text + "k";118     }119 120     private void pictureBox11_Click(object sender, EventArgs e)121     {122       textBox1.Text = textBox1.Text + "l";123     }124 125     private void pictureBox12_Click(object sender, EventArgs e)126     {127       textBox1.Text = textBox1.Text + "m";128     }129 130     private void pictureBox13_Click(object sender, EventArgs e)131     {132       textBox1.Text = textBox1.Text + "n";133     }134 135     private void pictureBox14_Click(object sender, EventArgs e)136     {137       textBox1.Text = textBox1.Text + "o";138     }139 140     private void pictureBox15_Click(object sender, EventArgs e)141     {142       textBox1.Text = textBox1.Text + "p";143     }144 145     private void pictureBox16_Click(object sender, EventArgs e)146     {147       textBox1.Text = textBox1.Text + "q";148     }149 150     private void pictureBox17_Click(object sender, EventArgs e)151     {152       textBox1.Text = textBox1.Text + "r";153     }154 155     private void pictureBox18_Click(object sender, EventArgs e)156     {157       textBox1.Text = textBox1.Text + "s";158     }159 160     private void pictureBox19_Click(object sender, EventArgs e)161     {162       textBox1.Text = textBox1.Text + "t";163     }164 165     private void pictureBox20_Click(object sender, EventArgs e)166     {167       textBox1.Text = textBox1.Text + "u";168     }169 170     private void pictureBox21_Click(object sender, EventArgs e)171     {172       textBox1.Text = textBox1.Text + "v";173     }174 175     private void pictureBox22_Click(object sender, EventArgs e)176     {177       textBox1.Text = textBox1.Text + "w";178     }179 180     private void pictureBox23_Click(object sender, EventArgs e)181     {182       textBox1.Text = textBox1.Text + "x";183     }184 185     private void pictureBox24_Click(object sender, EventArgs e)186     {187       textBox1.Text = textBox1.Text + "y";188     }189 190     private void pictureBox25_Click(object sender, EventArgs e)191     {192       textBox1.Text = textBox1.Text + "z";193     }194 195     private void FrmPinYin_FormClosing(object sender, FormClosingEventArgs e)196     {197       AnimateWindow(this.Handle, 300, FrmMain.AW_SLIDE + FrmMain.AW_VER_POSITIVE);198     }199     public void Binder() 200     {201       string PinYin = this.textBox1.Text;202       StringBuilder PY = new StringBuilder(PinYin);203      204       for (int i = 0; i <= PY.Length; i++)205       {206         PY.Insert(i, "%");207         i++;208       }209       string sql = string.Format("SELECT song_name,singer_name FROM  dbo.singer_info, dbo.song_info WHERE dbo.singer_info.singer_id=dbo.song_info.singer_id AND song_ab LIKE '{0}'", PY);210       DataSet ds = db.dataSet(sql, "PY");211       if (ds.Tables["PY"]!=null)212       {213         ds.Tables["PY"].Clear();214       }215       this.dgvPinYinInfo.DataSource = db.dataTable(sql, "PY");216     }217     private void pictureBox28_Click(object sender, EventArgs e)218     {219       string text = textBox1.Text;220       int index = text.Length - 1;221       if (index >= 0)222       {223         textBox1.Text = text.Remove(index);224       }225     }226 227     private void textBox1_TextChanged(object sender, EventArgs e)228     {229       if (textBox1.Text!=string.Empty)230       {231         Binder();232         this.dgvPinYinInfo.AutoGenerateColumns = false;233       }234       else235       {236         this.dgvPinYinInfo.DataSource=null;237       }238 239     }240 241    242 243     private void tsPYMain_Click(object sender, EventArgs e)244     {245       FrmMain main = new FrmMain();246       main.Show();247       this.Hide();248     }249 250     private void txPYAgain_Click(object sender, EventArgs e)251     {252       FrmMain main = new FrmMain();253       main.Playsong();254     }255     Song song = new Song();256     private void tsPYCut_Click(object sender, EventArgs e)257     {258       song.playState = SongPlayState.cut;259     }260 261     private void tsPYYidian_Click(object sender, EventArgs e)262     {263       FrmPlayList list = new FrmPlayList();264       list.Show();265     }266 267     private void tsPYBack_Click(object sender, EventArgs e)268     {269       Application.Exit();270     }    

类型点歌

 1  public FrmMain frmMain; 2     string connectionStr = "server=.;database=MyKTV;uid=sa"; 3     DBHelp db = new DBHelp(); 4     private SqlConnection con; 5     private void FrmSongType_Load(object sender, EventArgs e) 6     { 7       con = new SqlConnection(connectionStr); 8       con.Open(); 9       string sql = "select resource_path from resource_path where resource_id=1"; 10       string sqlsongpath = "select resource_path from resource_path where resource_id=2"; 11       SqlCommand cmd2 = new SqlCommand(sqlsongpath,con); 12       KtvUnit.SongPath = cmd2.ExecuteScalar().ToString(); 13       SqlCommand cmd = new SqlCommand(sql, con); 14       KtvUnit.ImagePath = cmd.ExecuteScalar().ToString(); 15       con.Close(); 16     17       con = new SqlConnection(connectionStr); 18       string sql1 = string.Format("select songtype_id,songtype_name,songtype_URL from song_type"); 19       SqlCommand cmd1 = new SqlCommand(sql1, con); 20       SqlDataReader dr; 21       try 22       { 23         con.Open(); 24         int index = 0; 25         lvSongType.Items.Clear(); 26         imageList1.Images.Clear(); 27         dr = cmd1.ExecuteReader(); 28         if (dr.HasRows) 29         { 30           while (dr.Read()) 31           { 32             string photoURL = KtvUnit.ImagePath + Convert.ToString(dr["songtype_URL"]); 33             //先给ImageList填充图片 34             imageList1.Images.Add(Image.FromFile(photoURL)); 35             ListViewItem lvItem = new ListViewItem(); 36             lvItem.Text = Convert.ToString(dr["songtype_name"]); 37             lvItem.Tag = Convert.ToString(dr["songtype_id"]); 38             lvItem.ImageIndex = index; 39             lvSongType.Items.Add(lvItem); 40             index++; 41           } 42         } 43         dr.Close(); 44       } 45       catch (Exception ex) 46       { 47  48         MessageBox.Show("系统出现异常" + ex.Message); 49       } 50       finally 51       { 52         con.Close(); 53       } 54     } 55     private void LoadSongType() 56     { 57       //读取数据库,读出该歌曲类型的所有歌曲 58  59       StringBuilder sb = new StringBuilder(); 60       //拼接SQL语句 61       sb.AppendFormat("select song_info.song_name,singer_info.singer_name,song_info.song_url from singer_info,song_info where song_info.singer_id=singer_info.singer_id and song_info.songtype_id={0}", Convert.ToInt32(lvSongType.SelectedItems[0].Tag)); 62       FrmSongList songList = new FrmSongList(); 63  64       songList.Sql = sb.ToString(); 65       songList.Previous = KtvClient.PrevioisForm.SongType;//指定返回的窗体是按歌曲类型点歌 66       songList.ShowDialog(); 67       this.Close(); 68     } 69  70     private void lvSongType_Click(object sender, EventArgs e) 71     { 72       LoadSongType(); 73     } 74  75     private void tsTYSingerMain_Click(object sender, EventArgs e) 76     { 77       FrmMain main = new FrmMain(); 78       main.Show(); 79       this.Hide(); 80     } 81  82     private void tsTYSingerAgain_Click(object sender, EventArgs e) 83     { 84       FrmMain main = new FrmMain(); 85       main.Playsong(); 86     } 87     Song song = new Song(); 88     private void tsTYSingerCut_Click(object sender, EventArgs e) 89     { 90       song.playState = SongPlayState.cut; 91     } 92  93     private void tsTYSingerYidian_Click(object sender, EventArgs e) 94     { 95       FrmPlayList list = new FrmPlayList(); 96       list.Show(); 97     } 98  99     private void tsTYSingerBack_Click(object sender, EventArgs e)100     {101       FrmMain main = new FrmMain();102       main.Show();103       this.Hide();104     }

金榜排行

 

 1  public FrmMain frmMain; 2     DBHelp db = new DBHelp(); 3     string connectionStr = "server=.;database=MyKTV;uid=sa"; 4     private void FrmJB_Load(object sender, EventArgs e) 5     { 6       SqlConnection con = new SqlConnection(connectionStr); 7       con.Open(); 8       db.connection(); 9       string sql = "SELECT song_name,song_play_count FROM dbo.song_info ORDER BY song_play_count DESC";10       string sqlsongpath = "select resource_path from resource_path where resource_id=2";11       SqlCommand cmd = new SqlCommand(sqlsongpath, con);12       KtvUnit.SongPath = cmd.ExecuteScalar().ToString();13       DataSet ds = db.dataSet(sql,"Count");14       this.dgvSongList.DataSource = ds.Tables["Count"].DefaultView;15     }16 17 18 19     private void dgvSongList_Click(object sender, EventArgs e)20     {21       DBHelp db = new DBHelp();22       if (dgvSongList.SelectedRows[0]!=null)23       {24         string songname = this.dgvSongList.SelectedRows[0].Cells["SongName"].Value.ToString();25         db.connection();26         string sql = string.Format("SELECT song_name,singer_name,song_url,song_photo_url FROM dbo.song_info,dbo.singer_info where dbo.singer_info.singer_id=dbo.song_info.singer_id and song_name='{0}'", songname);27 28         SqlDataReader reader = db.ExecuteReaders(sql.ToString());29 30         Song song;31         if (reader.Read())32         {33           song = new Song();34           song.SongName = reader["song_name"].ToString();35           song.SongURL = KtvUnit.SongPath + reader["song_url"].ToString();36           PlayList.AddSong(song);37         }38         reader.Close();39       }40       else41       {42         MessageBox.Show("空");43       }44       45     }

数字点歌

 1 public FrmMain frmMain; 2     string connectionStr = "server=.;database=MyKTV;uid=sa"; 3     DBHelp db = new DBHelp(); 4     private SqlConnection con; 5     private void FrmNumber_Load(object sender, EventArgs e) 6     { 7       con = new SqlConnection(connectionStr); 8       con.Open(); 9       string sqlsongpath = "select resource_path from resource_path where resource_id=2";10       SqlCommand cmd = new SqlCommand(sqlsongpath, con);11       KtvUnit.SongPath = cmd.ExecuteScalar().ToString();12       con.Close();13       for (int i = 1; i <= 4; i++)14       {15         for (int j = 1; j <= 3; j++)16         {17           Label label = new Label();18           label.ForeColor = Color.Red;19           label.BackColor = Color.Pink;20           label.Font=new System.Drawing.Font("华文彩云",20);21           label.TextAlign = ContentAlignment.MiddleCenter;22           label.Click += label_Click;23           this.MouseMove += FrmNumber_MouseMove;24           label.MouseHover += label_MouseHover;25           label.Size = new System.Drawing.Size(80, 40);26           label.Text = j.ToString();27           if (i > 1)28           {29             label.Text = (j + i + 1).ToString();30           }31           if (i > 2)32           {33             label.Text = (j + i + 3).ToString();34           }35           if (i > 3)36           {37             label.Text = (j + i + 5).ToString();38           }                 39           label.Location = new Point(40 + 120 * j, 40 + 60 * i);40           this.Controls.Add(label);41         }42       }43     }

已点列表

 

 1  private void FrmPlayList_Load(object sender, EventArgs e) 2     { 3       SongList(); 4     } 5     6     public void SongList()  7     { 8       lvSong.Items.Clear(); 9       for (int i = 0; i < PlayList.SongList.Length; i++)10       {11         if (PlayList.SongList[i]!=null)12         {13           ListViewItem item = new ListViewItem();14           item.Text = PlayList.SongList[i].SongName;15           item.Tag = i;16           string playstate = PlayList.SongList[i].PlayState == SongPlayState.unplayed ? "未播放" : "已播";17           item.SubItems.Add(playstate);18           lvSong.Items.Add(item);19         }20       }21     }22 23     private void btnClose_Click(object sender, EventArgs e)24     {25       this.Close();26     }