最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于C#的音樂播放器主Form實現(xiàn)代碼

 更新時間:2014年08月11日 15:59:45   投稿:shichen2014  
這篇文章主要介紹了基于C#的音樂播放器主Form實現(xiàn)代碼,很實用的功能,需要的朋友可以參考下

本文所述為一個由C#編寫的音樂播放器的主Form代碼,里面有一些小技巧還是不錯的,現(xiàn)共享給大家參考一下。里面有播放器背景設(shè)置、線程定義、調(diào)用讀取文件目錄方法、播放時間計數(shù)器、設(shè)置LV背景、獲取播放歌曲、播放按鈕,切換播放or暫停、切換歌曲到下一首,調(diào)用切歌方法、顯示播放列表、歌詞局中、播放窗體最小化隱藏到托盤設(shè)置、進度條滾動模塊、從歌曲列表中刪除文件等等功能。且各個功能模板均備有較為詳細的注釋,便于大家閱讀理解。

程序主要代碼如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Drawing.Imaging;
using System.Threading;
namespace MyMusicBox
{
  public partial class MainForm : Form
  {
    public MainForm()
    {
      InitializeComponent();
      SetStyle(ControlStyles.UserPaint, true);
      SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
      SetStyle(ControlStyles.AllPaintingInWmPaint, true);
      SetStyle(ControlStyles.DoubleBuffer, true); 
     
    }
    Song mySong = null;//播放的歌曲對象
    ListViewItem itemLrc;//打開歌詞路徑項
    Bitmap bm ;//用于動態(tài)設(shè)置LV背景
    public SavingInfo sa = null;//持久化信息類
    Thread thread;//后臺線程
 
    #region 加載事件
    private void MainForm_Load(object sender, EventArgs e)
    {
        //調(diào)用讀取配置文件方法
        Path.ReadPath();
        //窗體背景設(shè)置為配置文件中的圖片
        this.BackgroundImage = Image.FromFile(Path.bgPath);
        //調(diào)用讀取文件目錄方法
        Path.ReadSong();
        //讀取播放列表
        sa = new SavingInfo();
        sa.LoadPlayList();
        //綁定LV
        BindAllLV();
        BindPlayLV();
        SetLV();
        SetLrcBG();
        timer1.Enabled = Path.Playing;
        //顯示時間
        lblTime.Text = System.DateTime.Now.ToString();
        //兩個lbl用來根據(jù)歌曲總長和播放長度顯示進度,設(shè)置位置重疊
        lblRuning.Location = lblLong.Location;
        //啟動線程
        thread = new Thread(Renovate);
        thread.IsBackground = true;
        thread.Start();
      
    }
    #endregion
    #region 后臺刷新
    /// <summary>
    /// 時間計數(shù)狀態(tài)等刷新
    /// </summary>
    private void Renovate()
    {
      //while (true)
      //{
      //  //計數(shù)
      //  Count();
      //  //獲取當前時間
      //  lblTime.Text = System.DateTime.Now.ToString();
      //  //無歌曲提示,如果播放列表為空且當前播放列表為顯示狀態(tài)
      //  if (lvPlay.Items.Count == 0 && lvPlay.Visible)
      //    lblTs.Visible = true;
      //  else
      //    lblTs.Visible = false;
      //  Thread.Sleep(1000);
      //}
    }
    #endregion
    #region 設(shè)置LV背景
    /// <summary>
    /// 設(shè)置LV背景
    /// </summary>
    public void SetLV()
    {
      bm = new Bitmap(this.BackgroundImage, this.Width, this.Height);
      //繪制矩形,定義起始位置和寬高
      Rectangle r = new Rectangle(lvPlay.Location.X, lvPlay.Location.Y, lvPlay.Width, lvSong.Height);
      //按矩形尺寸和起始位置截取bm的一部分
      bm= bm.Clone(r,bm.PixelFormat);
      //把截取到的圖片設(shè)置為lv背景,達到與主窗體背景完美契合的效果
      lvSong.BeginUpdate();
      lvSong.BackgroundImage = (Image)bm;
      lvSong.EndUpdate();
      lvPlay.BeginUpdate();
      lvPlay.BackgroundImage = (Image)bm;
      lvPlay.EndUpdate();
    }
    #endregion
    
    #region 獲取歌曲
    /// <summary>
    /// 獲取播放歌曲
    /// </summary>
    private void GetSong()
    {
      //接收播放歌曲方法,獲得一個歌曲對象
      this.mySong = PlayList.Play();
      //如果歌曲對象不為空
      if (mySong != null)
      {
        //播放器路徑設(shè)置為該歌曲路徑
        wmp.URL = mySong.FileName;
        //調(diào)用方法,顯示歌曲名、歌手
        lblName.Text = PlayList.GetName();
        lblSinger.Text = PlayList.GetSinger();
        mySong.SongState = SongPlayState.played;//修改播放狀態(tài)
        //播放按鈕圖片修改為暫停圖片
        btnPlay.Image = Image.FromFile("Images\\stop.png"); 
        try
        {
          
          //讀取歌詞路徑
          Path.ReadLrc();
          AddLrc();
          //啟動一個定時器,此定時器只控制歌詞輪播
          timer2.Start();
        }
        catch (Exception)
        {
          LrcNull();
          itemLrc = new ListViewItem();
          itemLrc.SubItems.Add("找不到該歌曲歌詞文件!");
          itemLrc.ForeColor = Color.Blue;
          itemLrc.Font = new Font("微軟雅黑", 14.25F, ((FontStyle)((FontStyle.Bold | FontStyle.Underline))), GraphicsUnit.Point, ((byte)(134)));
          lvLrc.Items.Add(itemLrc);
        }
      }
    }
    #endregion
    #region 主定時器
    //定時器1
    private void timer1_Tick(object sender, EventArgs e)
    {
      if (Path.songPath == "")
      {
        timer1.Enabled = false;
        return;
      }
      
      //如果當前無播放歌曲,調(diào)用獲取歌曲的方法
      if (this.mySong == null)
      {
        GetSong();
      }
      //自動下一首,如果當前播放完畢
      if (this.wmp.playState == WMPLib.WMPPlayState.wmppsStopped)
      {
        this.mySong = null; // 將歌曲設(shè)為空
        Path.lrcPath = "";
        Path.dicLrc.Clear();
        PlayModel();
        PlayList.PlayNext();
        Thread.Sleep(1000);
      }
      // 切歌,當前有播放歌曲且播放狀態(tài)為cut
      if (this.mySong != null && this.mySong.SongState == SongPlayState.cut)
      {
        this.wmp.URL = "";//置空
        timer2.Stop();
        Path.dicLrc.Clear();
        Path.lrcPath = "";
        this.mySong = null;
      }
      //如果當前有播放歌曲,需要獲取的一些屬性
      if (wmp.URL!="")
      {
        //設(shè)置當前播放歌曲顏色
        SongColor();
        //獲取音量控件顯示值,根據(jù)控制刻度數(shù)量計算
        this.trackBar1.Value = wmp.settings.volume / 10;
        //歌曲時間顯示,一個是總長度,一個是已播放長度,字符串類型
        lblAll.Text = wmp.currentMedia.durationString;
        lblRun.Text = wmp.Ctlcontrols.currentPositionString;
        //進度條,使用了兩個lbl控件,歌曲長度/已播放長度=lbl1的寬/lbl2的寬
        //乘1000為防止數(shù)據(jù)過小出現(xiàn)錯誤
        double temp = (wmp.currentMedia.duration*1000) / (wmp.Ctlcontrols.currentPosition*1000);
        double width = lblLong.Width;
        double avg = width / temp;
        //判斷>1為了防止avg數(shù)值小于int界限
        if(avg>1)
          lblRuning.Width = Convert.ToInt32(avg);
        picRun.Left = lblRuning.Right;
        //托盤顯示播放歌曲
        this.notifyIcon1.Text =lblName.Text + lblSinger.Text;
      }
    }
    #endregion
    #region 播放按鈕
    /// <summary>
    /// 播放按鈕,切換播放or暫停
    /// </summary>
    private void btnPlay_Click(object sender, EventArgs e)
    {
      if(!timer1.Enabled)
        timer1.Start();
      //如果當前為正在播放
      if (wmp.playState == WMPLib.WMPPlayState.wmppsPlaying)
      {
        //暫停播放
        wmp.Ctlcontrols.pause();
        //按鈕圖片修改為播放
        btnPlay.Image = Image.FromFile("Images\\play.png");
        //停止控制歌詞滾動的定時器
        if (timer2.Enabled)
          timer2.Stop();
      }
      else if (wmp.playState == WMPLib.WMPPlayState.wmppsPaused)
      {
        //開始播放
        wmp.Ctlcontrols.play();
        //按鈕圖片修改為暫停
        btnPlay.Image = Image.FromFile("Images\\stop.png");
        //啟動歌詞滾動
        if (!timer2.Enabled&&Path.dicLrc.Count>0)
          timer2.Start();
      }
    }
    #endregion
    #region 切歌
    //切換下一首,調(diào)用切歌方法
    private void btnRight_Click(object sender, EventArgs e)
    {
      PlayList.Cut(false);
    }
    //上一首,調(diào)用切歌方法
    private void btnLeft_Click(object sender, EventArgs e)
    {
      PlayList.Cut(true);
    }
    #endregion
    #region 音量
    //靜音,靜音!=音量為0
    private void btnModel_Click(object sender, EventArgs e)
    {
      //如果播放器非靜音狀態(tài),前景文字顯示紅叉,狀態(tài)改為靜音
      if (wmp.settings.mute == false)
      {
        btnSound.Text = "×";
        wmp.settings.mute = true;
      }
      else//反之,已是靜音狀態(tài),清空紅叉,設(shè)置非靜音狀態(tài)
      {
        btnSound.Text = "";
        wmp.settings.mute = false;
      }
    }
    //設(shè)置音量,此事件為控制刻度值變化時
    private void trackBar1_Scroll(object sender, EventArgs e)
    {
      //音量設(shè)置為控制刻度*10(因為初始化的時候是/10)
      wmp.settings.volume = this.trackBar1.Value * 10;
    }
    #endregion
    #region 歌曲列表操作
    /// <summary>
    /// 綁定所有歌曲LV數(shù)據(jù)
    /// </summary>
    private void BindAllLV()
    {
      //如果所有歌曲集合為空,結(jié)束
      if (PlayList.song == null)
        return;
      lvSong.Items.Clear();
      //遍歷集合綁定到所有歌曲LV
      foreach (Song s in PlayList.song)
      {
        ListViewItem item = new ListViewItem(s.Name);
        item.Tag = s;
        item.SubItems.Add(s.Singer);
        lvSong.Items.Add(item);
      }
    }
    //點擊顯示所有歌曲
    private void tslblAll_Click(object sender, EventArgs e)
    {
      //隱藏播放列表
      lvPlay.Visible = false;
      //兩個LV位置重疊
      lvSong.Location = lvPlay.Location;
      //點擊后改變背景色
      tslblAll.BackColor = Color.Silver;
      tslblPlay.BackColor = Color.Transparent;
      //顯示所有歌曲LV
      lvSong.Visible = true;
    }
    //點擊顯示播放列表
    private void tslblPlay_Click(object sender, EventArgs e)
    {
      //調(diào)用綁定播放LV數(shù)據(jù)
      BindPlayLV();
      //背景色改變
      tslblPlay.BackColor = Color.Silver;
      tslblAll.BackColor = Color.Transparent;
      //隱藏所有歌曲LV
      lvSong.Visible = false;
      //顯示播放LV
      lvPlay.Visible = true;
    }
    /// <summary>
    /// 綁定播放列表
    /// </summary>
    private void BindPlayLV()
    {
      //如果播放集合不為空
      if (PlayList.play!=null)
      {
        lvPlay.Items.Clear();
        //遍歷集合綁定播放LV
        foreach (Song s in PlayList.play)
        {
          int id = lvPlay.Items.Count + 1;
          s.Id = id;
          ListViewItem item = new ListViewItem(id.ToString());
          item.SubItems.Add(s.Name);
          item.Tag = s;
          lvPlay.Items.Add(item);
        } 
      }
    }
    /// <summary>
    /// 歌曲計數(shù)
    /// </summary>
    private void Count()
    {
      //if (lvSong.Visible)
      //  lblCount.Text = "已選" + lvSong.CheckedItems.Count + "\\總" + lvSong.Items.Count;
      //if (lvPlay.Visible)
      //  lblCount.Text = "總" + lvPlay.Items.Count;
    }
    #endregion
    #region 歌詞操作
    /// <summary>
    /// 設(shè)置歌詞背景
    /// </summary>
    public void SetLrcBG()
    {
      bm = new Bitmap(this.BackgroundImage, this.Width, this.Height);
      //繪制矩形,定義起始位置和寬高
      Rectangle r = new Rectangle(lvLrc.Location.X, lvLrc.Location.Y, lvLrc.Width, lvLrc.Height);
      //按矩形尺寸和起始位置截取bm的一部分
      bm = bm.Clone(r, PixelFormat.Undefined);
      //把截取到的圖片設(shè)置為lv背景,達到與主窗體背景完美契合的效果
      lvLrc.BeginUpdate();
      lvLrc.BackgroundImage = (Image)bm;
      lvLrc.EndUpdate();
    }
    int nullCount;//記錄空行位置
    /// <summary>
    /// 設(shè)置空行,使歌詞局中
    /// </summary>
    private void LrcNull()
    {
      lvLrc.Items.Clear();
      nullCount = (int)Math.Ceiling(Convert.ToDouble(lvLrc.Height / 30 / 2));
      for (int i = 0; i <= nullCount; i++)
      {
        lvLrc.Items.Add("");
      }
    }
    /// <summary>
    /// 添加歌詞
    /// </summary>
    private void AddLrc()
    {
      LrcNull();
      foreach (string key in Path.dicLrc.Keys)
      {
        ListViewItem item = new ListViewItem();
        item.SubItems.Add(Path.dicLrc[key]);
        item.Tag = key;
        lvLrc.Items.Add(item);
      }
    }
    //只控制歌詞輪播
    private void timer2_Tick(object sender, EventArgs e)
    {
      //調(diào)用顯示歌詞的方法
      ShowLrc();
    }
    /// <summary>
    /// 顯示歌詞
    /// </summary>
    private void ShowLrc()
    {
      foreach (ListViewItem item in lvLrc.Items)
      {
        if (item.Tag == null)
          continue;
        if (item.Tag.ToString() == lblRun.Text )
        {
          item.ForeColor = Color.DarkOrange;
          item.Font = new Font("華文琥珀", 16F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(134)));
          lvLrc.Items[item.Index -1].ForeColor = Color.Silver;
          lvLrc.Items[item.Index - 1].Font = new Font("微軟雅黑", 12F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(134)));
          if (item.Index + 1<lvLrc.Items.Count)
            lvLrc.Items[item.Index+1].EnsureVisible();       
        }
      }
    }
    #endregion
    #region 窗體隱藏到托盤設(shè)置
    //最小化到托盤
    private void btnMix_Click(object sender, EventArgs e)
    {
      this.Hide();
    }
    //主窗體大小狀態(tài)變化時
    private void MainForm_SizeChanged(object sender, EventArgs e)
    {
      if (this.WindowState == FormWindowState.Minimized)
      {
        //啟動一個控件,該控制可以讓程序在右下角顯示圖標,需要提前設(shè)置該控制顯示的圖標圖片
        this.notifyIcon1.Visible = true;
      }
    }
    //托盤顯示,雙擊顯示窗體
    private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
    {
      ShowMain();
    }
    /// <summary>
    /// 顯示主窗體
    /// </summary>
    public void ShowMain()
    {
      if (!this.Visible)
      {
        this.TopMost = true;
        this.Show();
        this.TopMost = false;
      }
      else
      {
        this.TopMost = true;
        this.TopMost = false;
      }
    }
    //托盤打開窗體
    private void tsmiShow_Click(object sender, EventArgs e)
    {
      ShowMain();
    }
    //托盤退出
    private void tsmiExit_Click(object sender, EventArgs e)
    {
      Application.Exit();
    }
    #endregion
    #region 窗體位移
    Point mouseOff;//鼠標移動位置變量
    bool leftFlag;//標記是否為左鍵
    private void pnlMain_MouseDown(object sender, MouseEventArgs e)
    {
      if (e.Button == MouseButtons.Left)
      {
        mouseOff = new Point(-e.X, -e.Y); //得到變量的值
        leftFlag = true; //點擊左鍵按下時標注為true;
      }
    }
    private void pnlMain_MouseMove(object sender, MouseEventArgs e)
    {
      if (leftFlag)
      {
        Point mouseSet = Control.MousePosition;
        mouseSet.Offset(mouseOff.X, mouseOff.Y); //設(shè)置移動后的位置
        Location = mouseSet;
      }
    }
    private void pnlMain_MouseUp(object sender, MouseEventArgs e)
    {
      if (leftFlag)
      {
        leftFlag = false;//釋放鼠標后標注為false;
      }
    }
  #endregion
    #region 進度條滾動塊移動
    int runX;//記錄滾動塊初始位置
    private void picRun_MouseDown(object sender, MouseEventArgs e)
    {
      runX = e.X;
    }
    //釋放鼠標位移,進度前進
    private void picRun_MouseUp(object sender, MouseEventArgs e)
    {
      picRun.Left += e.X - runX - picRun.Width / 2;
      if (picRun.Left > lblLong.Right)
        picRun.Left = lblLong.Right;
      if(picRun.Left<lblLong.Left)
        picRun.Left = lblLong.Left;
      if (mySong != null)
      {
        lblRuning.Width = picRun.Right- lblRuning.Left;
        double temp = (lblLong.Width*1000.0 )/ (lblRuning.Width*1000.0);
        wmp.Ctlcontrols.currentPosition = wmp.currentMedia.duration / temp;
      }
    }
    #endregion
    #region 歌曲增刪操作
    //添加歌曲到播放列表
    private void tsmiAdd_Click(object sender, EventArgs e)
    {
      if (lvSong.CheckedItems.Count > 0)
      {
        foreach (ListViewItem item in lvSong.CheckedItems)
        {
           // 遍歷播放集合,如果存在不添加
           foreach (Song s in PlayList.play)
           {
             if (s.Name == item.Text)
             {
               PlayList.play.Remove(s);
               break;
             }
           }
           PlayList.play.Add(item.Tag as Song);
        }
      }
    }
    //所有歌曲:刪除選中歌曲
    private void tsmiDel_Click(object sender, EventArgs e)
    {
      foreach (ListViewItem item in lvSong.Items)
      {
        if (item.Checked)
        {
          PlayList.song.Remove(item.Tag as Song);
        } 
      }
      BindAllLV();
    }
    //全選歌曲
    private void tsmiCheck_Click(object sender, EventArgs e)
    {
      foreach (ListViewItem item in lvSong.Items)
      {
        if (tsmiCheck.Text == "全部選中")
        {
          item.Checked = true;
          if(item.Index+1==lvSong.Items.Count)
            tsmiCheck.Text = "取消選中";
        }
        else
        {
          item.Checked = false;
          if (item.Index + 1 == lvSong.Items.Count)
            tsmiCheck.Text = "全部選中";
        }
      }
    }
    //選中項的同時選中復(fù)選框
    private void lvSong_MouseDown(object sender, MouseEventArgs e)
    {
      if (lvSong.SelectedItems.Count > 0 && e.Button == MouseButtons.Left)
      {
        lvSong.SelectedItems[0].Checked = true;
      }
    }
    //播放列表刪除事件
    private void tsmiPlayDel_Click(object sender, EventArgs e)
    {
      foreach (ListViewItem item in lvPlay.Items)
      {
        if (item.Selected)
        {
          //PlayList.id = (lvPlay.Items[item.Index+1].Tag as Song).Id;
          //this.song = null;
          PlayList.play.Remove(item.Tag as Song);
        }
      }
      BindPlayLV();
    }
    //清空播放列表
    private void tsmiPlayClear_Click(object sender, EventArgs e)
    {
      PlayList.play.Clear();
      this.mySong = null;
      BindPlayLV();
    }
    //從播放列表刪除文件
    private void tsmiPlayDelFile_Click(object sender, EventArgs e)
    {
      if (lvPlay.SelectedItems.Count > 0)
      {
        DelFile(lvPlay.SelectedItems[0]);
      }
    }
    /// <summary>
    /// 刪除某項對應(yīng)文件
    /// </summary>
    /// <param name="item"></param>
    private void DelFile(ListViewItem item)
    {
      try
      {
        string path = (item.Tag as Song).FileName;
        File.Delete(path);
        BindAllLV();
        BindPlayLV();
      }
      catch (Exception)
      {
        MessageBox.Show("該文件為只讀文件或用戶權(quán)限不夠,無法刪除!");
      }
    }
    //從所有歌曲中刪除文件
    private void tsmiDelFile_Click(object sender, EventArgs e)
    {
      if (lvSong.SelectedItems.Count > 0)
      {
        DelFile(lvSong.SelectedItems[0]);
      }
    }
    //雙擊列表項播放歌曲
    private void lvPlay_DoubleClick(object sender, EventArgs e)
    {
      if (!timer1.Enabled)
      {
        PlayList.id = (lvPlay.SelectedItems[0].Tag as Song).Id;
        timer1.Start();
      }
      if (lvPlay.SelectedItems.Count > 0)
      {
        PlayList.id = (lvPlay.SelectedItems[0].Tag as Song).Id;
        this.mySong = null;
      }
    }
    #endregion
    #region 設(shè)置
    //跳轉(zhuǎn)設(shè)置窗體
    private void btnSet_Click(object sender, EventArgs e)
    {
      SetForm set = new SetForm();
      set.parent = this;//把主窗體傳過去
      set.Show(this);
    }
    #endregion
    #region 回滾
    /// <summary>
    /// 路徑重置后
    /// </summary>
    public void Back()
    {
      BindAllLV();
      PlayList.Update();
      timer1.Start();
    }
    #endregion
    #region 退出
    //關(guān)閉時保存列表
    private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
    {
      if (Path.SaveList)
        sa.SavePlayList();
    }
    //面板退出
    private void btnExit_Click(object sender, EventArgs e)
    {
      if (Path.Exit)
      {
        Application.Exit();
      }
      else
      {
        this.Hide();
      }
    }
 
    #endregion
    #region 背景顏色等變換控制
    private void btnLeft_MouseEnter(object sender, EventArgs e)
    {
      ((Button)sender).BackgroundImage = Image.FromFile("Images//allbtn_highlight.png");
    }
    private void btnLeft_MouseLeave(object sender, EventArgs e)
    {
      ((Button)sender).BackgroundImage = null;
    }
    private void tslblPlay_MouseEnter(object sender, EventArgs e)
    {
      ((ToolStripLabel)sender).BackgroundImage = Image.FromFile("Images//Album_bkg_wubian.png");
    }
    private void tslblPlay_MouseLeave(object sender, EventArgs e)
    {
      ((ToolStripLabel)sender).BackgroundImage = null;
    }
    //選中改變顏色
    private void lvSong_ItemChecked(object sender, ItemCheckedEventArgs e)
    {
      foreach (ListViewItem item in lvSong.Items)
      {
        if (item.Checked)
        {
          item.ForeColor = Color.DarkOrange;
        }
        else
        {
          item.ForeColor = Color.DimGray;
        }
      }
    }
    /// <summary>
    /// 當前播放歌曲改變顏色
    /// </summary>
    private void SongColor()
    {
      foreach (ListViewItem item in lvPlay.Items)
      {
        if (item.SubItems[1].Text == lblName.Text)
        {
          item.ForeColor = Color.DeepSkyBlue;
        }
        else
        {
          item.ForeColor = Color.White;
        }
      }
    }
    #endregion
    #region 選擇歌詞
    private void lvLrc_MouseDown(object sender, MouseEventArgs e)
    {
      if (lvLrc.SelectedItems.Count>0&&lvLrc.SelectedItems[0] == itemLrc)
      {
        if (Path.OpenLrc())
        {
          AddLrc();
          //啟動一個定時器,此定時器只控制歌詞輪播
          timer2.Start();
        }
      }
    }
    #endregion
    #region 窗體最大化設(shè)置
    Size now;//原始尺寸
    Point pN;//原始位置
    //最大化
    private void btnMax_Click(object sender, EventArgs e)
    {
      Size max = new Size(Screen.PrimaryScreen.WorkingArea.Width - 10, Screen.PrimaryScreen.WorkingArea.Height - 20);
      if (this.Size != max)
      {
        pN = this.Location;
        now= this.Size;
        this.Size = max;
        this.Left = 5;
        this.Top = 5;
        btnMax.Image = Image.FromFile("Images//max1.png")
;
      }
      else
      {
        this.Location = pN;
        this.Size = now;
        btnMax.Image = Image.FromFile("Images//max.png");
      }
      SetLV();
      SetLrcBG();
    }
    #endregion
    #region 歌詞、MV切換
    private void tsmiLrc_Click(object sender, EventArgs e)
    {
      lvLrc.Visible = true;
      wmp.Visible = false;
      tsmiLrc.BackColor = Color.LawnGreen;
      tsmiMv.BackColor = Color.Transparent;
    }
    private void tsmiMv_Click(object sender, EventArgs e)
    {
      wmp.Location = lvLrc.Location;
      wmp.Size = lvLrc.Size;
      lvLrc.Visible = false;
      wmp.Visible = true;
      tsmiLrc.BackColor = Color.Transparent;
      tsmiMv.BackColor = Color.LawnGreen;
    }
    #endregion
    #region 播放模式切換
    /// <summary>
    /// 播放模式
    /// </summary>
    private void PlayModel()
    {
      if (tsmiOne.Checked)
      {
        PlayList.PlayOne();
      }
      else if (tsmiSJ.Checked)
      {
        PlayList.PlayRandom();
      }
    }
    private void tsmiXH_Click(object sender, EventArgs e)
    {
      ToolStripMenuItem ts=((ToolStripMenuItem)sender);
      foreach(ToolStripMenuItem item in tsmiModel.DropDownItems)
      {
        if (ts.Checked && ts == item)
        {
          continue;
        }
        else
        {
          item.Checked = false;
        }
      }
    }
    #endregion
    
  }
}

希望本文所述示例對大家的C#程序開發(fā)能夠起到一定的借鑒價值。

相關(guān)文章

  • C#實現(xiàn)的滾動網(wǎng)頁截圖功能示例

    C#實現(xiàn)的滾動網(wǎng)頁截圖功能示例

    這篇文章主要介紹了C#實現(xiàn)的滾動網(wǎng)頁截圖功能,結(jié)合具體實例形式分析了C#圖形操作的相關(guān)技巧,需要的朋友可以參考下
    2017-07-07
  • Winform窗體傳值的方法(示例)

    Winform窗體傳值的方法(示例)

    C#開發(fā)windows應(yīng)用程序項目時,不同窗口之間傳值有很多中方法,在此給大家介紹兩種比較常用的winform窗體傳值的方法,有需要的朋友可以參考下
    2015-08-08
  • C#中使用快速排序按文件創(chuàng)建時間將文件排序的源碼

    C#中使用快速排序按文件創(chuàng)建時間將文件排序的源碼

    C#中使用快速排序按文件創(chuàng)建時間將文件排序的源碼...
    2007-03-03
  • Unity Shader實現(xiàn)線框效果的制作步驟

    Unity Shader實現(xiàn)線框效果的制作步驟

    最近比較忙,今天抽空給大家分享一篇文章,關(guān)于Unity Shader實現(xiàn)線框效果,本文給大家分享詳細制作步驟,通過圖文實例相結(jié)合給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-06-06
  • C#創(chuàng)建一個小型Web Server(Socket實現(xiàn))

    C#創(chuàng)建一個小型Web Server(Socket實現(xiàn))

    這篇文章主要介紹了關(guān)于C#利用Socket實現(xiàn)創(chuàng)建一個小型Web Server的相關(guān)資料,文中通過示例代碼介紹的很詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • 詳解c# AutoMapper 使用方式

    詳解c# AutoMapper 使用方式

    本篇文章主要介紹了詳解c# AutoMapper 使用方式 ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • c#中XML解析文件出錯解決方法

    c#中XML解析文件出錯解決方法

    在解析xml時,經(jīng)常因為文件中含特殊字符而解析失敗。原因有兩個:一是內(nèi)容中含有XML預(yù)定義好的實體,二是內(nèi)容中含有低位非打印字符
    2014-08-08
  • C#窗體傳值實例匯總

    C#窗體傳值實例匯總

    這篇文章主要介紹了C#窗體傳值,實例形式匯總了靜態(tài)變量傳值、委托傳值、對話框之間的傳值等常見應(yīng)用技巧,需要的朋友可以參考下
    2014-12-12
  • C#異步方法返回void與Task的區(qū)別詳解

    C#異步方法返回void與Task的區(qū)別詳解

    這篇文章主要給大家介紹了關(guān)于C#異步方法返回void與Task的區(qū)別的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • c#互斥鎖Mutex類用法介紹

    c#互斥鎖Mutex類用法介紹

    本文詳細講解了c#互斥鎖Mutex類的用法,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-02-02

最新評論

许昌市| 积石山| 兴安县| 西吉县| 射洪县| 河间市| 伊川县| 茶陵县| 南部县| 武隆县| 凤凰县| 永春县| 明溪县| 睢宁县| 且末县| 页游| 泾源县| 山丹县| 乐至县| 开封市| 合水县| 鹿邑县| 鞍山市| 平泉县| 那坡县| 大同县| 富宁县| 临朐县| 化隆| 芦溪县| 安徽省| 隆化县| 邹城市| 张掖市| 西丰县| 苗栗县| 惠来县| 乐安县| 淅川县| 勐海县| 黄龙县|