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 try
101 {
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 finally
130 {
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 else
235 {
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 else
41 {
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 }