繼上次的前臺內容今天我們來講一講後臺的一些事兒吧!後臺呢主要是對前臺的歌手、歌曲信息及圖片、歌曲路徑的一些~嗯~算是配置吧! 還是先看效果圖 後臺效果圖 登錄界面 主界面 添加歌手 該窗體填寫歌手信息並選擇圖片後會將歌手的信息保存在資料庫並且將選中的圖片複製到資料庫中存放歌手圖像的制定路徑中! 查詢...
繼上次的前臺內容今天我們來講一講後臺的一些事兒吧!後臺呢主要是對前臺的歌手、歌曲信息及圖片、歌曲路徑的一些~嗯~算是配置吧! 還是先看效果圖
後臺效果圖
登錄界面
主界面
添加歌手
該窗體填寫歌手信息並選擇圖片後會將歌手的信息保存在資料庫並且將選中的圖片複製到資料庫中存放歌手圖像的制定路徑中!
查詢歌手
查詢窗體中可以對歌手的信息進行修改和刪除,修改歌手和添加歌手共用一個窗體
添加歌曲
添加個曲中點擊瀏覽按鈕選擇歌曲後會自動載入歌曲的名字和拼音縮寫,點擊選擇按鈕打開查詢歌手窗體選擇歌手點擊保存按鈕效果和添加歌手窗體中的保存按鈕差不多
查詢歌曲信息
修改歌曲信息和添加歌曲共用一個窗體
設置路徑
設置歌手圖片路徑和設置歌曲路徑共用一個窗體
後臺技術實現
同一窗體實現多種功能
以添加歌手窗體為例該功能分兩步實現
1.定義一個公有的靜態變數或枚舉用來標示不同的功能
2.在窗體的load事件和保存按鈕的Click事件中對枚舉或公有變數進行判定
//載入信息(load事件) private void addsinger_Load(object sender, EventArgs e) { getdb();//添加歌手 if (id!="") { detinfo();//修改歌手 this.Text = "修改歌手信息"; } } //保存信息(保存按鈕的Click事件) private void btnOk_Click(object sender, EventArgs e) { //判斷信息是否完整 if (txtinfo.Text!=""&&txtname.Text!=""&&cmblist.Text!=""&&(rb0.Checked==true ||tb1.Checked==true||rb2.Checked==true)&&openFileDialog1.FileName!="") { //項資料庫添加或修改數據 if (id=="") { insertdb();//添加 } else { update();//修改 } } else { MessageBox.Show("請完善信息"); } }
在添加歌曲窗體中打開查詢歌手信息窗體選擇歌手
1.在添加歌曲窗體中定義一個公用的靜態變數(Singername)用來保存歌手名字
2.在用戶選擇一個歌手後給添加歌曲窗體中的靜態變數(Singername)賦值
{ string name = dataGridView1.SelectedRows[0].Cells[0].Value.ToString();//獲取選中歌手的名稱 insertsong.Singername = name;//給添加歌手窗體中的Singername變數賦值 this.Close(); }
3.在查詢歌手窗體關閉後將Singername中的只賦給文本框
{ selectsinger frm = new selectsinger(); frm.ShowDialog();//打開查詢歌手窗體 txtsingername.Text=Singerrname;給文本框賦值 }
關於供用戶選擇文件的openFileDialog控制項
控制項的常用屬性:
屬 性 | 說 明 |
FileName | 用戶選擇文件的完整路徑 |
Filter | 在選擇對話框中加入篩選條件(對話框只顯示符合條件格式的文件) |
ShowDialog | 打開對話框 |
SafeFileName | 用戶選擇文件的名稱(帶擴展名) |
控制項的常用事件:
事 件 | 說 明 |
FileOK | 在用戶點擊“打開”或“保存”按鈕式發生 |
HelpRequest | 在用戶點擊“幫助”按鈕時發生 |
關於供用戶選擇文件夾的FolderBrowserDialog控制項
控制項的常用屬性:
屬 性 | 說 明 |
SelectedPath | 用戶選擇的文件夾的路徑 |
ShowNewFolderButton | 是否在對話框中顯示“新建文件夾”按鈕 |
關於File類
該類提供用於創建、複製、刪除、移動和打開文件的靜態方法,並協助創建 System.IO.FileStream 對象。
Copy()方法:
// 摘要:
// 將現有文件複製到新文件。 允許覆蓋同名的文件。
// 參數:
// sourceFileName:
// 要複製的文件。
// destFileName:
// 目標文件的名稱。 它不能是一個目錄或現有文件
// overwrite:
// 如果可以覆蓋目標文件,則為 true;否則為 false。
Create()方法:
// 摘要:
// 創建或覆蓋具有指定的緩衝區大小、文件選項和文件安全性的指定文件。
// 參數:
// path:
// 文件的名稱。
// bufferSize:
// 用於讀取和寫入文件的已放入緩衝區的位元組數。
// options:
// System.IO.FileOptions 值之一,它描述如何創建或覆蓋該文件。
// fileSecurity:
// System.Security.AccessControl.FileSecurity 值之一,它確定文件的訪問控制和審核安全性。
// 返回結果:
// 具有指定的緩衝區大小、文件選項和文件安全性的新文件。
Delete()方法:
// 摘要:
// 刪除指定的文件。
// 參數:
// path:
// 要刪除的文件的名稱。 該指令不支持通配符。
Exists()方法:
// 摘要:
// 確定指定的文件是否存在。
//
// 參數:
// path:
// 要檢查的文件
關於Directory類
Delete()方法:
// 摘要:
// 刪除指定的目錄並(如果指示)刪除該目錄中的所有子目錄和文件。
// 參數:
// path:
// 要移除的目錄的名稱。
// recursive:
// 若要移除 path 中的目錄、子目錄和文件,則為 true;否則為 false。
Exists()方法:
// 摘要:
// 確定給定路徑是否引用磁碟上的現有目錄。
// 參數:
// path:
// 要測試的路徑。
// 返回結果:
// 如果 path 引用現有目錄,則為 true;否則為 false。
Move()方法:
// 摘要:
// 將文件或目錄及其內容移到新位置。
// 參數:
// sourceDirName:
// 要移動的文件或目錄的路徑。
// destDirName:
// 指向 sourceDirName 的新位置的路徑。 如果 sourceDirName 是一個文件,則 destDirName 也必須是一個文件名。