日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

KTV项目

發布時間:2023/12/29 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 KTV项目 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

KTV項目

目錄

  • KTV項目
    • 理論 數據庫 加控件介紹
      • 添加
      • 切歌
      • 暫停
        • 狀態小結
        • 我們的玩法
        • 播放暫停停止
        • 暫停和播放一起
      • 擴展
      • 綜合應用
      • 引入添加文件控件
        • openFileDialog過濾文件
        • 利用相對路徑播放文件
        • 復制文件
        • 判斷文件是否存在
        • 刪除文件
      • 面板切換
        • panel
        • 面板切換
        • 圖片盒子
          • 加載圖片
        • 小結
      • 數據庫操作
        • 思路構建
        • 數據庫設計
          • 歌手表
          • 歌曲表
          • 歌手類型表
          • 關聯
        • 材料收集
    • 網易云項目
      • 界面
      • 代碼
        • 主界面
      • 其他工具類

理論 數據庫 加控件介紹

添加




切歌

利用數組拼路徑

暫停

狀態小結

正在播放的視頻的顯示 3

暫停的視頻的顯示 2

播放完了顯示的是 1

沒有加載顯示的是 0

我們的玩法

如果狀態是1 播放玩長了,可以切歌

播放暫停停止

暫停和播放一起

private void timer1_Tick(object sender, EventArgs e){//獲取當前狀態currentState = (int)axWindowsMediaPlayer1.playState;//判斷//修改我的按鈕的文本if (currentState == 3){button3.Text = "暫停";}if (currentState == 2){button3.Text = "播放";}} private void button3_Click(object sender, EventArgs e){//判斷//播放if(currentState == 3){//暫停axWindowsMediaPlayer1.Ctlcontrols.pause();}//暫停if(currentState == 2){//播放axWindowsMediaPlayer1.Ctlcontrols.play();}if(currentState == 1){}}

擴展

我們的媒體控件不可以的大小不可控
這里我們要很好額控制大小就要用到 Panel 這個控件
Panel 這個控件和HTML的 div 差不多

填滿

綜合應用

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 db11071206媒體控件作業 {public partial class Form1 : Form{//定義一個歌曲數組public String[] names = {"劉大壯 - 會不會(吉他版).mp3","沈靈七an - 會不會(溫柔女生完整版).mp3","就是南方凱 - 萬拒(吉他版).mp3" ,"薛之謙 - 演員.mp3","許嵩 - 斷橋殘雪.mp3"};//定義一個計數器public int i;//定義一個顯示當前狀態的成員變量public int currentState;public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){//調用音頻加載方法namesArray(i);}private void namesArray(int i){//獲取第一個音頻名稱String fileName = names[i];//文件位置String dirPath = "D:\\CloudMusic";//拼接路徑String filePath = dirPath + "\\" + fileName;//調用修改 lable 的值 (顯示當前播放歌曲名)modifyLableText(names);//給音頻賦值axWindowsMediaPlayer1.URL = filePath;}private void modifyLableText(String[] names){//獲取當前播放的歌曲名稱String tamp = names[i];//從中查找 . 的位置int lookup = tamp.LastIndexOf(".");//截取文字String text = tamp.Substring(0, lookup);//給lable 賦值label2.Text = text;}private void button1_Click(object sender, EventArgs e){//判斷我當前的下標if (i == 0){//讓我的 計數器 等于數組長度i = names.Length;}//計數器減一i--;//重新加載歌曲信息namesArray(i);//給lable 重新賦值modifyLableText(names);}private void timer1_Tick(object sender, EventArgs e){//獲取當前狀態currentState = (int)axWindowsMediaPlayer1.playState;//判斷//修改我的按鈕的文本if (currentState == 3){button3.Text = "暫停";}if (currentState == 2){button3.Text = "播放";}}private void button3_Click(object sender, EventArgs e){//判斷//播放if(currentState == 3){//暫停axWindowsMediaPlayer1.Ctlcontrols.pause();}//暫停if(currentState == 2){//播放axWindowsMediaPlayer1.Ctlcontrols.play();}}private void button2_Click(object sender, EventArgs e){//計數器加一i++;//判斷我當前的下標if (i == names.Length){//讓我的 計數器 等于0i = 0;}//重新加載歌曲信息namesArray(i);//給lable 重新賦值modifyLableText(names);}private void button4_Click(object sender, EventArgs e){//停止axWindowsMediaPlayer1.Ctlcontrols.stop();}private void timer2_Tick(object sender, EventArgs e){//判斷我的歌曲轉態 播放完后切歌if (currentState == 1) { //切換下一首//計數器加一i++;//判斷我當前的下標if (i == names.Length){//讓我的 計數器 等于0i = 0;}//調用歌曲加載namesArray(i);//給lable 重新賦值modifyLableText(names);}}} }

引入添加文件控件

顯示控件

兩個屬性的區別

讓播放器播放我選中的視頻或者MP3



openFileDialog過濾文件

openFileDialog 過濾文件



(媒體文件)|.mkv|mp3|.mp3

方法一:

方法二:

效果

這種模式要選擇

我們可選擇多個



這里可以把括號去掉


效果

利用相對路徑播放文件

用相對路徑播放文件 傳輸文件是可以一起過去 可以不需要很長的路徑


對于代碼只需要加上文件名就可以了

復制文件


. 是一個字節

效果


會將文件存進Dubug
代碼:

判斷文件是否存在

我要判斷文件是否存在,避免程序報錯

刪除文件

如果用戶要更新文件,所以這邊我們不可以以寫return
想要實現此方法,我們要先刪掉此文件再拷貝過來


面板切換

panel


這個效果像div一樣
利用panel盒子布局

面板切換


點擊我的listView 里面項的的里面應該Tag存個一個id,然后給lable

圖片盒子

加載圖片

利用這個方法可以獲得一個圖片
設置圖片內容

### 對象初始化器







小結




數據庫操作

思路構建

數據庫設計

歌手表


設想分類


這里是利用歌手字母查找:


利用歌曲查找

idnamegenderTypecountryTypepingYingimg
1周杰倫1dxzjl.jpg
歌曲表


singerId 是外鍵會關聯主鍵

idnamealbumtimessingerIdhotpath
1一路生花一路生花4.1616200一路生花.mp4
歌手類型表

idname
1華語
2日韓
3歐美

關聯

三個表的關聯

材料收集

收集媒體資源
手機歌手圖片

已面向對象的方式添加

后臺:

歌手分類管理:添加分類,刪除分類,修改分類,顯示所有分類

歌手管理:添加歌手,修改歌手,查詢歌手,刪除歌手

歌曲管理:增,刪,改,查

前臺:

界面:歌手點歌,歌曲排名,拼音點歌

播放界面,歌單(上一曲,下一曲,頂歌)

播放按鈕,暫停,重新開始,自動下切一首

網易云項目

界面

啟動后


代碼

主界面

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; using System.Data.SqlClient;namespace 網易元音樂項目 {public partial class Form1 : Form{// old sizeSize oldSize;bool isMax = false;//播放列表 當前下標private int currentIdex;// 當前播放狀態bool isPlay = false;// 播放列標轉臺bool isPlayList = false;public Form1(){InitializeComponent();}private void pictureBox1_Click(object sender, EventArgs e){// 關閉窗口this.Close();}private void pbClose_MouseMove(object sender, MouseEventArgs e){//讓鼠標變成小手this.Cursor = Cursors.Hand;}private void pictureBox2_Click(object sender, EventArgs e){//讓窗口最小化this.Show();this.ShowInTaskbar = true;this.WindowState = FormWindowState.Minimized;this.BringToFront();}private void pictureBox2_MouseMove(object sender, MouseEventArgs e){//讓鼠標變成小手this.Cursor = Cursors.Hand;}private void panel1_MouseMove(object sender, MouseEventArgs e){// 讓鼠標變為默認this.Cursor = Cursors.Default;}private void splitContainer1_Panel2_MouseMove(object sender, MouseEventArgs e){// 讓鼠標變為默認this.Cursor = Cursors.Default;}private void splitContainer1_Panel1_MouseMove(object sender, MouseEventArgs e){// 讓鼠標變為默認this.Cursor = Cursors.Default;}private void panel2_MouseMove(object sender, MouseEventArgs e){// 讓鼠標變為默認this.Cursor = Cursors.Default;}private void panel3_MouseMove(object sender, MouseEventArgs e){// 讓鼠標變為默認this.Cursor = Cursors.Default;}private void pictureBox1_Click_1(object sender, EventArgs e){if (this.isMax == false){// 改變功能欄圖片String imgFunctionPath = Setting.imgDir + @"\功能欄2.png";Image functionBar = Image.FromFile(imgFunctionPath);plFunctionBar.BackgroundImage = functionBar;// 最大化顯示系統工具欄this.MaximizedBounds = Screen.PrimaryScreen.WorkingArea;this.MaximumSize = Screen.PrimaryScreen.WorkingArea.Size;this.MaximumSize = Screen.FromHandle(this.Handle).WorkingArea.Size;// 保存窗口當前的大小this.oldSize = this.Size;// 窗口最大化this.WindowState = FormWindowState.Maximized;this.isMax = true;}else{// 改變功能欄圖片String imgFunctionPath = Setting.imgDir + @"\功能欄.png";Image functionBar = Image.FromFile(imgFunctionPath);plFunctionBar.BackgroundImage = functionBar;// 窗口恢復默認this.WindowState = FormWindowState.Normal;this.Size = this.oldSize;this.isMax = false;}}private void Form1_Load(object sender, EventArgs e){// 播放列表隱藏plPlaylist.Visible = false;// 播放列標大小設置plPlaylist.Size = new Size(382, 803);// 播放歌曲歌手文本隱藏lblSongName.Visible = false;lblSingGerrnName.Visible = false;// 讓首頁選中的背景顏色變色lblHomePage.BackColor = Color.FromArgb(246, 246, 247);// 隱藏所有allFormMinimize();// 顯示主界面plHomePage.Visible = true;// 平鋪plHomePage.Dock = DockStyle.Fill;// 初始化 歌單1initSongList1();// 初始化 歌單2initSongList2();// 初始化 歌單3initSongList3();// 初始化 歌單4initSongList4();}private void initSongList3(){// 調用幫手DbHelper helper = new DbHelper();// 新建 sql 語句String sql = "select Song.id as songId,Song.name as songName,Album.name as songAlbum,times,Singer.name as songSinger,mp3Path,mvkPath,imgs from Song inner join Album on Song.albumId = Album.id inner join Singer on Song.singerId = Singer.id where Singer.name not in ('周杰倫','劉大壯')";// 獲取數據郎讀者SqlDataReader reader = helper.getReader(sql);// 循環while (reader.Read()){// 獲取對應的值String songId = reader["songId"].ToString();String songName = reader["songName"].ToString();String songAlbumld = reader["songAlbum"].ToString();String songTimes = reader["times"].ToString();String songSingerId = reader["songSinger"].ToString();String songMp3Path = reader["mp3Path"].ToString();String songMvkPath = reader["mvkPath"].ToString();String songImg = reader["imgs"].ToString();// 新建一個listViewItem 對象ListViewItem item = new ListViewItem();// 對象賦值Song s = lineToObject(reader);// 橋梁賦值item.Tag = s;// 對應賦值item.Text = songName;item.SubItems.Add(songSingerId);item.SubItems.Add(songAlbumld);item.SubItems.Add(songTimes);// 把item添加進 listView 中lvSongList3.Items.Add(item);}}private void initSongList2(){// 調用幫手DbHelper helper = new DbHelper();// 新建 sql 語句String sql = "select Song.id as songId,Song.name as songName,Album.name as songAlbum,times,Singer.name as songSinger,mp3Path,mvkPath,imgs from Song inner join Album on Song.albumId = Album.id inner join Singer on Song.singerId = Singer.id where Singer.name = '周杰倫'";// 獲取數據朗讀者SqlDataReader reader = helper.getReader(sql);// 循環while (reader.Read()){// 獲取對應的值String songId = reader["songId"].ToString();String songName = reader["songName"].ToString();String songAlbumld = reader["songAlbum"].ToString();String songTimes = reader["times"].ToString();String songSingerId = reader["songSinger"].ToString();String songMp3Path = reader["mp3Path"].ToString();String songMvkPath = reader["mvkPath"].ToString();String songImg = reader["imgs"].ToString();// 新建一個listViewItem 對象ListViewItem item = new ListViewItem();// 對象賦值Song s = lineToObject(reader);// 橋梁賦值item.Tag = s;// 對應賦值item.Text = songName;item.SubItems.Add(songSingerId);item.SubItems.Add(songAlbumld);item.SubItems.Add(songTimes);// 把item添加進 listView 中lvSongList2.Items.Add(item);}}private void initSongList1(){// 調用幫手DbHelper helper = new DbHelper();// 新建 slq 語句String sql = "select Song.id as songId,Song.name as songName,Album.name as songAlbum,times,Singer.name as songSinger,mp3Path,mvkPath,imgs from Song inner join Album on Song.albumId = Album.id inner join Singer on Song.singerId = Singer.id where Singer.name = '劉大壯'";// 獲取數據朗讀者SqlDataReader reader = helper.getReader(sql);// 循環while (reader.Read()){// 獲取對應的值String songId = reader["songId"].ToString();String songName = reader["songName"].ToString();String songAlbumld = reader["songAlbum"].ToString();String songTimes = reader["times"].ToString();String songSingerId = reader["songSinger"].ToString();String songMp3Path = reader["mp3Path"].ToString();String songMvkPath = reader["mvkPath"].ToString();String songImg = reader["imgs"].ToString();// 新建一個listViewItem 對象ListViewItem item = new ListViewItem();// 對象賦值Song s = lineToObject(reader);// 橋梁賦值item.Tag = s;// 對應賦值item.Text = songName;item.SubItems.Add(songSingerId);item.SubItems.Add(songAlbumld);item.SubItems.Add(songTimes);// 把item添加進 listView 中lvSongList1.Items.Add(item);}}private void initSongList4(){// 調用幫手DbHelper helper = new DbHelper();// 新建 slq 語句String sql = "select Song.id as songId,Song.name as songName,Album.name as songAlbum,times,Singer.name as songSinger,mp3Path,mvkPath,imgs from Song inner join Album on Song.albumId = Album.id inner join Singer on Song.singerId = Singer.id";// 獲取數據朗讀者SqlDataReader reader = helper.getReader(sql);// 循環while (reader.Read()){// 獲取對應的值String songId = reader["songId"].ToString();String songName = reader["songName"].ToString();String songAlbumld = reader["songAlbum"].ToString();String songTimes = reader["times"].ToString();String songSingerId = reader["songSinger"].ToString();String songMp3Path = reader["mp3Path"].ToString();String songMvkPath = reader["mvkPath"].ToString();String songImg = reader["imgs"].ToString();// 新建一個listViewItem 對象ListViewItem item = new ListViewItem();// 對象賦值Song s = lineToObject(reader);// 橋梁賦值item.Tag = s;// 對應賦值item.Text = songName;item.SubItems.Add(songSingerId);item.SubItems.Add(songAlbumld);item.SubItems.Add(songTimes);// 把item添加進 listView 中lvSongList4.Items.Add(item);}}private void pictureBox1_MouseMove(object sender, MouseEventArgs e){// 鼠標變成小手this.Cursor = Cursors.Hand;}private void allFormMinimize(){// 讓所有的lv 隱藏lvSearch.Visible = false;lvSongList1.Visible = false;lvSongList2.Visible = false;lvSongList3.Visible = false;lvSongList4.Visible = false;// 讓首頁隱藏plHomePage.Visible = false;// 讓播放器隱藏plMedia.Visible = false;// 讓播放列表隱藏plPlaylist.Visible = false;}private void label4_Click(object sender, EventArgs e){// 讓所有的lable 文字背景顏色變成白色allLableBackColor();// 讓選中的背景顏色變色lblHomePage.BackColor = Color.FromArgb(246, 246, 247);// 讓其他的lv的隱藏allFormMinimize();// 讓首頁顯示plHomePage.Visible = true;// 平鋪plHomePage.Dock = DockStyle.Fill;}private void allLableBackColor(){// 讓所有的lable恢復默認顏色lblHomePage.BackColor = Color.FromArgb(255, 255, 255);lblSongList1.BackColor = Color.FromArgb(255, 255, 255);lblSongList2.BackColor = Color.FromArgb(255, 255, 255);lblSongList3.BackColor = Color.FromArgb(255, 255, 255);lblSongList4.BackColor = Color.FromArgb(255, 255, 255);}private void pbSongList4_Click(object sender, EventArgs e){// 隱藏所有allFormMinimize();// 顯示歌單4lvSongList4.Visible = true;//設置平鋪lvSongList4.Dock = DockStyle.Fill;}private void lblSongList4_Click(object sender, EventArgs e){// 讓所有的lable 文字背景顏色變成白色allLableBackColor();// 讓選中的背景顏色變色lblSongList4.BackColor = Color.FromArgb(246, 246, 247);// 讓其他的lv的隱藏allFormMinimize();// 讓首頁顯示lvSongList4.Visible = true;// 平鋪lvSongList4.Dock = DockStyle.Fill;}private void pbSongList1_Click(object sender, EventArgs e){// 隱藏所有allFormMinimize();// 顯示歌單lvSongList1.Visible = true;// 設置平鋪lvSongList1.Dock = DockStyle.Fill;}private void plHomePage_MouseMove(object sender, MouseEventArgs e){// 鼠標恢復默認this.Cursor = Cursors.Default;}private void lblSongList1_Click(object sender, EventArgs e){// 讓所有的lable 文字背景顏色變成白色allLableBackColor();// 讓選中的背景顏色變色lblSongList1.BackColor = Color.FromArgb(246, 246, 247);// 隱藏所有allFormMinimize();// 顯示歌單lvSongList1.Visible = true;// 設置平鋪lvSongList1.Dock = DockStyle.Fill;}private void pbSongList3_Click(object sender, EventArgs e){// 隱藏所有allFormMinimize();// 顯示歌單lvSongList3.Visible = true;// 設置平鋪lvSongList3.Dock = DockStyle.Fill;}private void lblSongList3_Click(object sender, EventArgs e){// 讓所有的lable 文字背景顏色變成白色allLableBackColor();// 讓選中的背景顏色變色lblSongList3.BackColor = Color.FromArgb(246, 246, 247);// 隱藏所有allFormMinimize();// 顯示歌單lvSongList3.Visible = true;// 設置平鋪lvSongList3.Dock = DockStyle.Fill;}private void pbSongList2_Click(object sender, EventArgs e){// 隱藏所有allFormMinimize();// 顯示歌單lvSongList2.Visible = true;// 設置平鋪lvSongList2.Dock = DockStyle.Fill;}private void lblSongList2_Click(object sender, EventArgs e){// 讓所有的lable 文字背景顏色變成白色allLableBackColor();// 讓選中的背景顏色變色lblSongList2.BackColor = Color.FromArgb(246, 246, 247);// 隱藏所有allFormMinimize();// 顯示歌單lvSongList2.Visible = true;// 設置平鋪lvSongList2.Dock = DockStyle.Fill;}private void lblHomePage_MouseMove(object sender, MouseEventArgs e){// 鼠標變成小手this.Cursor = Cursors.Hand;}private void lblSongList1_MouseMove(object sender, MouseEventArgs e){// 鼠標變成小手this.Cursor = Cursors.Hand;}private void lblSongList2_MouseMove(object sender, MouseEventArgs e){// 鼠標變成小手this.Cursor = Cursors.Hand;}private void lblSongList3_MouseMove(object sender, MouseEventArgs e){// 鼠標變成小手this.Cursor = Cursors.Hand;}private void lblSongList4_MouseMove(object sender, MouseEventArgs e){// 鼠標變成小手this.Cursor = Cursors.Hand;}private void panel7_MouseMove(object sender, MouseEventArgs e){// 鼠標恢復默認this.Cursor = Cursors.Default;}private void lblKTV_Click(object sender, EventArgs e){// 隱藏所有allFormMinimize();// 顯示歌單plHomePage.Visible = true;// 設置平鋪plHomePage.Dock = DockStyle.Fill;}private void lblKTV_MouseMove(object sender, MouseEventArgs e){// 鼠標變成小手this.Cursor = Cursors.Hand;}private void pictureBox6_Click(object sender, EventArgs e){if (isPlayList == false){// 顯示播放列表plPlaylist.Visible = true;// 改變歌曲列表的狀態isPlayList = true;}else{// 隱藏播放列表plPlaylist.Visible = false;// 改變歌曲列表的狀態isPlayList = false;}}private void butSearch_Click(object sender, EventArgs e){// 獲取文本框內容String txtBox = txtSearch.Text;// 清空內容lvSearch.Items.Clear();if (txtBox.Trim().Length == 0){MessageBox.Show("請輸入搜索內容!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);return;}// 隱藏所有allFormMinimize();// 顯示搜索列表lvSearch.Visible = true;// 設置平鋪lvSearch.Dock = DockStyle.Fill;// 初始化 搜索列表initSongSearch();// 判斷行數int i = lvSearch.Items.Count;if (i == 0){MessageBox.Show("對不起,沒有您想要的內容!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);return;}}private void initSongSearch(){// 調用幫手DbHelper helper = new DbHelper();// 獲取文本框內容String txtBox = txtSearch.Text;// 構建 sql 語句String sql = String.Format("select Song.id as songId,Song.name as songName,Album.name as songAlbum,times,Singer.name as songSinger,mp3Path,mvkPath,imgs from Song inner join Album on Song.albumId = Album.id inner join Singer on Song.singerId = Singer.id where Song.name like '%{0}%' or Singer.name like '%{1}%';", txtBox, txtBox);// 獲取數據朗讀者SqlDataReader reader = helper.getReader(sql);// 循環while (reader.Read()){// 獲取對應的值String songId = reader["songId"].ToString();String songName = reader["songName"].ToString();String songAlbumld = reader["songAlbum"].ToString();String songTimes = reader["times"].ToString();String songSingerId = reader["songSinger"].ToString();String songMp3Path = reader["mp3Path"].ToString();String songMvkPath = reader["mvkPath"].ToString();String songImg = reader["imgs"].ToString();// 新建一個listViewItem 對象ListViewItem item = new ListViewItem();// 對象賦值Song s = lineToObject(reader);// 橋梁賦值item.Tag = s;// 對應賦值item.Text = songName;item.SubItems.Add(songSingerId);item.SubItems.Add(songAlbumld);item.SubItems.Add(songTimes);// 把item添加進 listView 中lvSearch.Items.Add(item);}}private Song lineToObject(SqlDataReader reader){//獲取數據String songId = reader["songId"].ToString();String songName = reader["songName"].ToString();String songAlbumld = reader["songAlbum"].ToString();String songTimes = reader["times"].ToString();String songSingerId = reader["songSinger"].ToString();String songMp3Path = reader["mp3Path"].ToString();String songMvkPath = reader["mvkPath"].ToString();String songImg = reader["imgs"].ToString();//實例化一個歌曲對象Song s = new Song();s.Id = songId;s.SongFullNameMp3 = songMp3Path;s.SongFullName = songMvkPath;s.SongName = songName;s.SingerName = songSingerId;s.AlbumName = songAlbumld;s.SongTimes = songTimes;s.SongImge = songImg;return s;}private void lvSongList4_Click(object sender, EventArgs e){}private void lvSongList1_MouseMove(object sender, MouseEventArgs e){// 讓鼠標變為默認this.Cursor = Cursors.Default;}private void lvSongList2_MouseMove(object sender, MouseEventArgs e){// 讓鼠標變為默認this.Cursor = Cursors.Default;}private void lvSongList3_MouseMove(object sender, MouseEventArgs e){// 讓鼠標變為默認this.Cursor = Cursors.Default;}private void lvSearch_MouseMove(object sender, MouseEventArgs e){// 讓鼠標變為默認this.Cursor = Cursors.Default;}private void lvSongList4_MouseMove(object sender, MouseEventArgs e){// 讓鼠標變為默認this.Cursor = Cursors.Default;}private void lvSongList4_DoubleClick(object sender, EventArgs e){//判斷選中的行數int i = lvSongList4.SelectedItems.Count;// 判斷選中的行數if (i == 0){return;}// 獲取選中的項藏著的歌Song s = (Song)(lvSongList4.SelectedItems[0].Tag);// 判斷歌曲是否存在bool isExist = checkExist(Db.playArry, s);// 判斷 b 對象if (isExist){return;}// 把這首歌放到播放列表的對象數組中ArrayHelper.append(Db.playArry, s);// 獲取這個歌數組的真實長度int len = ArrayHelper.getRealNum(Db.playArry);// 同步數據lblSongNumber.Text = len.ToString();// 更新播放列表updatePlayList();// 獲取當前項的數量int c = lvSongPlayList.Items.Count;// 當前數量減一 currentIdex = c - 1;// 播放下一首歌playMedia();}private void updatePlayList(){//清空lvlvSongPlayList.Items.Clear();//遍歷播單數組,有一個數據,就來一個項foreach (Song s in Db.playArry){//排除掉 null 的情況if (s == null){break;}//有一首歌就來一個項ListViewItem item = new ListViewItem();//給想添加屬性item.Text = s.SongName;item.SubItems.Add(s.SingerName);item.SubItems.Add(s.SongTimes);//把項添加進lv里面lvSongPlayList.Items.Add(item);}}private bool checkExist(Song[] playArry, Song s){//遍歷數組foreach (Song tempSong in playArry){if (tempSong == null){break;}//獲取當前的歌曲idString tempId = tempSong.Id;String sId = s.Id;//獲取id做比較bool b = tempId.Equals(sId);//如果b 等于 trueif (b){return true;}}return false;}private void 添加進播放列表ToolStripMenuItem_Click(object sender, EventArgs e){//判斷選中的行數int i = lvSongList4.SelectedItems.Count;// 判斷選中的行數if (i == 0){return;}// 獲取選中的項藏著的歌Song s = (Song)(lvSongList4.SelectedItems[0].Tag);// 判斷歌曲是否存在bool isExist = checkExist(Db.playArry, s);// 判斷 b 對象if (isExist){return;}// 把這首歌放到播放列表的對象數組中ArrayHelper.append(Db.playArry, s);// 獲取這個歌數組的真實長度int len = ArrayHelper.getRealNum(Db.playArry);// 同步數據lblSongNumber.Text = len.ToString();// 更新播放列表updatePlayList();}private void timer1_Tick(object sender, EventArgs e){// 獲取播放列表中歌曲的數量int i = lvSongPlayList.Items.Count;// 判斷播放列表中是否有數據if (i > 0){if (isPlay == false){// 改變播放狀態isPlay = true;// 播放第一首歌playMedia();}}}private void playMedia(){// 有數組// 找到歌曲對象需要 用到一個下標// 當前歌曲下標// 獲取數組真實長度int i = ArrayHelper.getRealNum(Db.playArry);// 判斷數組下標是否越界if (currentIdex >= i){currentIdex = 0;}// 從播放列表中找到當前對應的歌曲對象Song currentSong = Db.playArry[currentIdex];// 非空判斷if (currentSong == null){MessageBox.Show("請在播放列表中添加歌曲!", "提示", MessageBoxButtons.OK);return;}// 從對象獲取歌曲的媒體名稱 列 七里香.mp3String songFullName = currentSong.SongFullNameMp3;// 獲取歌手姓名String singerName = currentSong.SingerName;// 歌曲姓名String songName = currentSong.SongName;// 獲取歌曲圖片String songImge = currentSong.SongImge;// 判斷照片是否為空if (songImge.Equals("")){// 為空 修改成默認圖片songImge = "default.jpg";}// 把名稱 拼成 路徑// 目錄路徑 + 媒體名稱String songPath = Setting.mp3Dir + singerName + "\\" + songFullName;// 同步歌曲圖片String imgPath = Setting.mp3ImgeDir + singerName + "\\" + songImge;// 獲取圖片Image image = Image.FromFile(imgPath);// 圖片賦值pbSongImage.BackgroundImage = image;// 歌曲信息賦值lblSongName.Text = songName;lblSongName.Visible = true;// 歌手信息賦值lblSingGerrnName.Text = singerName;lblSingGerrnName.Visible = true;// 播放的功能// 播放器控件URL=路徑axWindowsMediaPlayer1.URL = songPath;//initLvSongColor();lvSongPlayList.Items[currentIdex].BackColor = Color.FromArgb(0, 120, 215);}private void initLvSongColor(){// 遍歷foreach (ListViewItem item in lvSongPlayList.Items){item.BackColor = Color.FromArgb(255, 255, 255);}}private void pictureBox3_Click(object sender, EventArgs e){// 獲取媒體控件的當前狀態int status = (int)axWindowsMediaPlayer1.playState;// 判斷歌曲是否是在播放if (status == 3 || status == 2){// 判斷歌曲狀態是否是暫停if (status == 2){axWindowsMediaPlayer1.Ctlcontrols.play();// 讓顯示內容為暫停// 獲取圖片位置String imgPause = Setting.imgDir + "\\暫停.png";Image pauseImg = Image.FromFile(imgPause);// 讓圖片為暫停的圖片pbPlayAndPause.Image = pauseImg;// 返回值return;}// 讓媒體控件停頓axWindowsMediaPlayer1.Ctlcontrols.pause();// 讓顯示內容為播放// 獲取圖片位置String imgPaly = Setting.imgDir + "\\播放.png";Image palyImg = Image.FromFile(imgPaly);// 讓圖片為暫停的圖片pbPlayAndPause.Image = palyImg;}}private void trIsSongFinish_Tick(object sender, EventArgs e){// 判斷當前的歌曲狀態int i = (int)axWindowsMediaPlayer1.playState;// 獲取播放數組真實長度int len = ArrayHelper.getRealNum(Db.playArry);if (i >= len){i = 0;}if (i == 1){currentIdex++;playMedia();}}private void toolStripMenuItem1_Click(object sender, EventArgs e){// 前端移除// 判斷選中的行數int i = lvSongPlayList.SelectedItems.Count;// 判斷選中行數是否為零if (i == 0){return;}// 獲取id 通過 id 移除歌曲int remove = lvSongPlayList.SelectedItems[0].Index;// 移除lvSongPlayList.Items.RemoveAt(remove);// 后端移除ArrayHelper.pop(Db.playArry, remove);// 更新數據updateArryNumber();}private void pbNextSong_Click(object sender, EventArgs e){//讓播放的下標+1currentIdex++;//數據邊界判斷,上限判斷//獲取播放列表的數組中的真實長度 4 //當前下標是否大于等于4,數據校正,int realNum = ArrayHelper.getRealNum(Db.playArry);//判斷if (currentIdex >= realNum){currentIdex = 0;}//播放下一首playMedia();}private void pbPrev_Click(object sender, EventArgs e){//下標自減currentIdex--;//獲取真實長度int realNum = ArrayHelper.getRealNum(Db.playArry);//邊界判斷if (currentIdex < 0){currentIdex = realNum - 1;}//播放下一首playMedia();}private void 移除所有歌曲ToolStripMenuItem_Click(object sender, EventArgs e){// 前端移除// 移除所有歌曲lvSongPlayList.Items.Clear();// 后端移除Db.playArry = new Song[10];// 更新數據updateArryNumber();}private void updateArryNumber(){// 獲取數組真實長度int i = ArrayHelper.getRealNum(Db.playArry);// 更新lablelblSongNumber.Text = i.ToString();}private void toolStripMenuItem2_Click(object sender, EventArgs e){// 判斷選中項的個數int i = lvSongPlayList.SelectedItems.Count;// 判斷if (i <= 0){return;}// 獲取當前選中行的下標int indexItem = lvSongPlayList.SelectedItems[0].Index;// 保存選中的數據Song s = Db.playArry[indexItem];// 移除數據ArrayHelper.pop(Db.playArry, indexItem);// 調用 數組工具類 進行添加ArrayHelper.insert(Db.playArry, 1, s);// 更新播放列表updatePlayList();}private void lvSongList1_DoubleClick(object sender, EventArgs e){//判斷選中的行數int i = lvSongList1.SelectedItems.Count;// 判斷選中的行數if (i == 0){return;}// 獲取選中的項藏著的歌Song s = (Song)(lvSongList1.SelectedItems[0].Tag);// 判斷歌曲是否存在bool isExist = checkExist(Db.playArry, s);// 判斷 b 對象if (isExist){return;}// 把這首歌放到播放列表的對象數組中ArrayHelper.append(Db.playArry, s);// 獲取這個歌數組的真實長度int len = ArrayHelper.getRealNum(Db.playArry);// 同步數據lblSongNumber.Text = len.ToString();// 更新播放列表updatePlayList();// 獲取當前項的數量int c = lvSongPlayList.Items.Count;// 當前數量減一 currentIdex = c - 1;// 播放下一首歌playMedia();}private void lvSongList2_DoubleClick(object sender, EventArgs e){//判斷選中的行數int i = lvSongList2.SelectedItems.Count;// 判斷選中的行數if (i == 0){return;}// 獲取選中的項藏著的歌Song s = (Song)(lvSongList2.SelectedItems[0].Tag);// 判斷歌曲是否存在bool isExist = checkExist(Db.playArry, s);// 判斷 b 對象if (isExist){return;}// 把這首歌放到播放列表的對象數組中ArrayHelper.append(Db.playArry, s);// 獲取這個歌數組的真實長度int len = ArrayHelper.getRealNum(Db.playArry);// 同步數據lblSongNumber.Text = len.ToString();// 更新播放列表updatePlayList();// 獲取當前項的數量int c = lvSongPlayList.Items.Count;// 當前數量減一 currentIdex = c - 1;// 播放下一首歌playMedia();}private void lvSongList3_DoubleClick(object sender, EventArgs e){//判斷選中的行數int i = lvSongList3.SelectedItems.Count;// 判斷選中的行數if (i == 0){return;}// 獲取選中的項藏著的歌Song s = (Song)(lvSongList3.SelectedItems[0].Tag);// 判斷歌曲是否存在bool isExist = checkExist(Db.playArry, s);// 判斷 b 對象if (isExist){return;}// 把這首歌放到播放列表的對象數組中ArrayHelper.append(Db.playArry, s);// 獲取這個歌數組的真實長度int len = ArrayHelper.getRealNum(Db.playArry);// 同步數據lblSongNumber.Text = len.ToString();// 更新播放列表updatePlayList();// 獲取當前項的數量int c = lvSongPlayList.Items.Count;// 當前數量減一 currentIdex = c - 1;// 播放下一首歌playMedia();}private void lvSearch_DoubleClick(object sender, EventArgs e){//判斷選中的行數int i = lvSearch.SelectedItems.Count;// 判斷選中的行數if (i == 0){return;}// 獲取選中的項藏著的歌Song s = (Song)(lvSearch.SelectedItems[0].Tag);// 判斷歌曲是否存在bool isExist = checkExist(Db.playArry, s);// 判斷 b 對象if (isExist){return;}// 把這首歌放到播放列表的對象數組中ArrayHelper.append(Db.playArry, s);// 獲取這個歌數組的真實長度int len = ArrayHelper.getRealNum(Db.playArry);// 同步數據lblSongNumber.Text = len.ToString();// 更新播放列表updatePlayList();// 獲取當前項的數量int c = lvSongPlayList.Items.Count;// 當前數量減一 currentIdex = c - 1;// 播放下一首歌playMedia();}private void 添加進歌單3ToolStripMenuItem_Click(object sender, EventArgs e){//判斷選中的行數int i = lvSongList2.SelectedItems.Count;// 判斷選中的行數if (i == 0){return;}// 獲取選中的項ListViewItem item;}private void pbPlayAndPause_MouseMove(object sender, MouseEventArgs e){// 鼠標變成小手this.Cursor = Cursors.Hand;}private void pbNextSong_MouseMove(object sender, MouseEventArgs e){// 鼠標變成小手this.Cursor = Cursors.Hand;}private void pbPrev_MouseMove(object sender, MouseEventArgs e){// 鼠標變成小手this.Cursor = Cursors.Hand;}private void pictureBox6_MouseMove(object sender, MouseEventArgs e){// 鼠標變成小手this.Cursor = Cursors.Hand;}private void pbMV_MouseMove(object sender, MouseEventArgs e){// 鼠標變成小手this.Cursor = Cursors.Hand;}private void pbMV_Click(object sender, EventArgs e){// 獲取播放狀態int i = (int)axWindowsMediaPlayer1.playState;// 獲取當前播放歌曲對象Song s = Db.playArry[currentIdex];if (s == null){MessageBox.Show("對不起本視頻沒有MV!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);return;}// 判斷是否有視頻if (s.SongFullName.Equals("")){MessageBox.Show("對不起本視頻沒有MV!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);return;}// 隱藏所有allFormMinimize();// 顯示視頻窗口plMedia.Visible = true;// 視頻窗口平鋪plMedia.Dock = DockStyle.Fill;// 獲取mvk 路徑 String mp4Path = s.SongFullName;// 獲取歌手姓名String singerName = s.SingerName;// 拼接路徑String mp4FullPath = Setting.mp4Dir + singerName + "\\" + mp4Path;// 播放視頻axWindowsMediaPlayer1.URL = mp4FullPath;}private void lvSongPlayList_DoubleClick(object sender, EventArgs e){//判斷選中的行數int i = lvSongPlayList.SelectedItems.Count;// 判斷選中的行數if (i == 0){return;}// 獲取選中行的下標int indexItem = lvSongPlayList.SelectedItems[0].Index;currentIdex = indexItem;playMedia();}private void pbSongList1_MouseMove(object sender, MouseEventArgs e){// 鼠標變成小手this.Cursor = Cursors.Hand;}private void pbSongList2_MouseMove(object sender, MouseEventArgs e){// 鼠標變成小手this.Cursor = Cursors.Hand;}private void pbSongList3_MouseMove(object sender, MouseEventArgs e){// 鼠標變成小手this.Cursor = Cursors.Hand;}private void pbSongList4_MouseMove(object sender, MouseEventArgs e){// 鼠標變成小手this.Cursor = Cursors.Hand;}} }

其他工具類

主入口

using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows.Forms;namespace 網易元音樂項目 {static class Program{/// <summary>/// 應用程序的主入口點。/// </summary>[STAThread]static void Main(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new Form1());}} }

路徑位置

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 網易元音樂項目 {class Setting{// 平臺界面圖片路徑public static String imgDir = @"ziliao\前端";// 歌曲MP3路徑public static String mp3Dir = @"D:\KTV資源管理\mp3\";// 歌曲圖片路徑public static String mp3ImgeDir = @"D:\KTV資源管理\img\";// 歌曲Mp4路徑public static String mp4Dir = @"D:\KTV資源管理\mp4\";} }

播放列表對象數組

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 網易元音樂項目 {class Db{//播放列表的對象數組public static Song[] playArry = new Song[10];} }

提供共有方法

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 網易元音樂項目 {class Song{//歌手idprivate String id;public String Id{get { return id; }set { id = value; }}//歌曲路徑全名private String songFullNameMp3;public String SongFullNameMp3{get { return songFullNameMp3; }set { songFullNameMp3 = value; }}//MV路徑全名private String songFullName;public String SongFullName{get { return songFullName; }set { songFullName = value; }}//歌曲姓名private String songName;public String SongName{get { return songName; }set { songName = value; }}//歌手姓名private String singerName;public String SingerName{get { return singerName; }set { singerName = value; }}//專輯名稱private String albumName;public String AlbumName{get { return albumName; }set { albumName = value; }}//歌曲時長private String songTimes;public String SongTimes{get { return songTimes; }set { songTimes = value; }}// 歌曲封面private String songImge;public String SongImge{get { return songImge; }set { songImge = value; }}} }

數據庫連接工具類

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient; using System.Data;namespace 網易元音樂項目{class DbHelper{// 連接字符串public String connStr = "Data Source=.;Initial Catalog=KTV1107;Integrated Security=True";// 獲得連接對象public SqlConnection getConn() {//獲取連接對象SqlConnection conn = new SqlConnection(this.connStr);//打開連接conn.Open();//返回值//返回連接對象return conn;}// 增刪改方法// 返回受影響行數public int update(String sql) {// 連接對象SqlConnection conn = getConn();// 執行者SqlCommand cmd = new SqlCommand(sql,conn);// int i = 執行者.執行不查詢()int i = cmd.ExecuteNonQuery();//返回值//返回受影響行數return i;}// 查詢方法// 返回數據朗讀者public SqlDataReader getReader (String sql) {// 連接對象SqlConnection conn = getConn();// 執行者SqlCommand cmd = new SqlCommand();cmd.CommandText = sql;cmd.Connection = conn;// 執行者.executeReader()----》數據朗讀者SqlDataReader reader = cmd.ExecuteReader();//返回值//返回數據朗讀者return reader;}// 獲取斷開式的表public DataTable getTable(String sql){//獲取連接對象SqlConnection conn = getConn();//獲取倉庫DataSet ds = new DataSet();//數據小車SqlDataAdapter adapter = new SqlDataAdapter(sql,conn);//小車卸貨adapter.Fill(ds,"table");//獲取數據表DataTable dt = ds.Tables["table"];//返回值//返回數據表return dt;}//獲取倉庫public DataSet getDataSet(String sql){//獲取連接對象SqlConnection conn = getConn();//獲取倉庫DataSet ds = new DataSet();//獲取數據小車SqlDataAdapter adapter = new SqlDataAdapter(sql,conn);//小車卸貨adapter.Fill(ds,"table");//返回值//返回倉庫return ds;}} }

數組工具類

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace 網易元音樂項目 {class ArrayHelper{// 求數組真實長度public static int getRealNum(Object[] objs) {// 定義一個計數器int len = 0;// 遍歷數組,獲得下標for (int i = 0; i < objs.Length; i++){// i就是下標// 獲取下標對應的值object item = objs[i];// 判斷非法if (item == null) {break;}// 合法情況len++;}return len;}// 未位添加算法public static void append(Object[] objs,object obj) { // 獲取數據int realNum = getRealNum(objs);int length = objs.Length;// 非法判斷if (realNum == length) {return;}// 主要邏輯objs[realNum] = obj;}// 未位刪除public static object pop(Object[] objs) {// 獲取相關數據int realNum = getRealNum(objs);// 非法情況if (realNum == 0) {return null;}// 主邏輯// 計算最后一個成員的下標int lastIdx = realNum - 1;// 拿到這個下標對應的值object obj = objs[lastIdx];// 把最后一個成員的下標對應位置設置為nullobjs[lastIdx] = null;// 返回這個值return obj;}// 中部插入算法public static void insert(Object[] objs, int insertIndex, Object obj) { // 獲取相關數據int realNum = getRealNum(objs);// 非法驗證if (insertIndex >= realNum) {return;}if (realNum == objs.Length) {return;}// 主邏輯// 1,數據后移int lastIdx = realNum - 1;for (int i = lastIdx; i >= insertIndex; i--){// i代表要操做的下標了Object o = objs[i];objs[i + 1] = o;}// 2,數據填入objs[insertIndex] = obj;}// 中部刪除public static object pop(Object[] objs,int delIndex) {// 獲取相關數據int realNum = getRealNum(objs);// 非法驗證if (delIndex >= realNum) {return null;}// get del itemobject delItem = objs[delIndex];// 主邏輯// 1,位移int lastIndex = realNum - 1; // 最后一個數據的下標for (int i = delIndex; i <= lastIndex-1; i++){// i代表了要操做的下標// 獲取下一個下標對應的值object o = objs[i + 1];objs[i] = o;}// 2,設空// 設置最后一個成員的位置,讓它變為nullobjs[lastIndex] = null;// 返回數據return delItem;}} }

總結

以上是生活随笔為你收集整理的KTV项目的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美日韩国产第一页 | 免费看黄色网 | 男人的天堂视频在线观看 | 厕拍极品 | 99思思 | 在线视频观看你懂得 | 色女人网 | 日本va欧美va国产激情 | 国产v在线| 黑人巨大精品欧美一区二区蜜桃 | 国产精品免费视频一区二区三区 | 国产精品久久久久久久成人午夜 | 日韩国产二区 | 久久sp| 久久久久久国产精品日本 | 日韩精品久久久久久久的张开腿让 | 日本三级吃奶头添泬 | 2020av视频 | 日韩在线播放中文字幕 | 欧美综合一区二区 | 国产免费福利视频 | 精品久久久999 | 国产无套内射又大又猛又粗又爽 | 国产精品一区二区av | 国产精品69毛片高清亚洲 | jiizzyou欧美2| 可以直接观看的av | 免费观看毛片视频 | 日韩深夜在线 | 国产精品久久久久久吹潮 | 免费瑟瑟网站 | 成人黄色三级视频 | 善良的公与媳hd中文字 | 国产让女高潮的av毛片 | 免费的毛片 | 天堂av影院| 日本久久精品视频 | 一区二区视频网 | 亚洲国产精品成人va在线观看 | 丰满护士巨好爽好大乳 | 中文字幕av在线免费观看 | 午夜看片| 一区二区三区在线观看av | 少妇人妻好深好紧精品无码 | 亚洲a视频在线 | 操操操免费视频 | 中文在线第一页 | 成人精品在线观看视频 | 欧美成本人视频 | 日本高清视频www | 国产视频分类 | 午夜精品一区二区三区在线观看 | 强伦轩人妻一区二区电影 | 欧美高清在线视频 | 国产女大学生av | 中文字幕无码不卡免费视频 | 精品人妻少妇AV无码专区 | 中文字幕第15页 | 国产睡熟迷奷系列精品视频 | 日韩无码精品一区二区 | 精品麻豆一区二区 | 欧美少妇一区二区三区 | 亚洲熟妇毛茸茸 | 日韩免费不卡视频 | 一区二区成人网 | 日韩视频在线观看一区二区三区 | 色综合久久久久 | 精品乱码一区二区三区 | 日日淫 | 色男人av | 亚洲女同视频 | 风韵丰满熟妇啪啪区老熟熟女 | 人妻丰满熟妇av无码区hd | 黄色av一区二区三区 | 奇米777狠狠 | 都市激情校园春色 | 人妻体体内射精一区二区 | 日韩电影一区二区三区 | 91麻豆国产在线 | wwyoujizzcom| 日韩精品色呦呦 | 欧美高清性 | 亚洲奶汁xxxx哺乳期 | 国产欧美一区二区三区在线 | 清纯唯美亚洲激情 | 很黄很污的视频网站 | 国产欧美一区二区三区另类精品 | 亚洲色图国产精品 | 婚后打屁股高h1v1调教 | 国产资源站 | 国产精品国产三级国产专播品爱网 | 欧美婷婷| 亚洲午夜久久久久久久久红桃 | 18岁免费观看电视连续剧 | 久久99精品久久久久久三级 | 6996电视影片免费看 | 99精品在线免费观看 | 国产啊啊啊啊 | www一区 |