MyKTV项目总结
项目名称: KTV 点歌系统 -- 指导老师原玉明 经过一周多的时间,终于完成的我的这个 KTV 项目,说实话,做这个项目我收获了不少,难点也非常多,不过经过重重磨难,总算是过来了。不简单呀! 这个项目主要分为前后台。 前台主要实现的功能是:歌星点歌,拼音
项目名称:KTV点歌系统
--指导老师原玉明
经过一周多的时间,终于完成的我的这个KTV项目,说实话,做这个项目我收获了不少,难点也非常多,不过经过重重磨难,总算是过来了。不简单呀!
这个项目主要分为前后台。
前台主要实现的功能是:歌星点歌,拼音点歌,字数点歌,
类型选择,金曲排行,一些切歌,重唱,已点歌曲列表,主要是这些功能。
后台主要实现的功能是:增加歌手,增加歌曲,修改歌曲路径,修改歌手图片路径。
首先先看前台:
前台核心类:
SqlHelper类(负责连接数据库):
<span style="color: #008000;">//</span><span style="color: #008000;">连接字符串</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">string</span> str = <span style="color: #800000;">"</span><span style="color: #800000;">Data Source=HYJ-PC;Initial Catalog=MyKTV;User ID=sa;pwd=123</span><span style="color: #800000;">"</span>;
KtvHelper类(保存歌曲的目录;保存歌手图片的目录)
<span style="color: #008000;">//</span><span style="color: #008000;">保存歌曲的目录</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">string</span> songURL = <span style="color: #800000;">""</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">保存歌手图片的目录</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">string</span> singer_photoURL = <span style="color: #800000;">""</span><span style="color: #000000;">; FrmByValue类(窗体对象之间的传值) </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span><span style="color: #000000;"> frmsonglist frmsl; </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span><span style="color: #000000;"> FrmMain frM; </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> SelectedSong ss;
Song类(歌曲的信息及实现歌曲状态的一个切换(已播放;未播放;重播;切歌)):
<span style="color: #008000;">//</span><span style="color: #008000;">定义一个枚举:歌曲播放状态</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">enum</span><span style="color: #000000;"> SongPlayState { unplayed, played, newplayed, cut } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> Song { </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span><span style="color: #000000;"> SongName { </span><span style="color: #0000ff;">get</span> { <span style="color: #0000ff;">return</span><span style="color: #000000;"> songName; } </span><span style="color: #0000ff;">set</span> { songName =<span style="color: #000000;"> value; } } </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">string</span><span style="color: #000000;"> SongURL { </span><span style="color: #0000ff;">get</span> { <span style="color: #0000ff;">return</span><span style="color: #000000;"> songURL; } </span><span style="color: #0000ff;">set</span> { songURL =<span style="color: #000000;"> value; } } </span><span style="color: #0000ff;">internal</span><span style="color: #000000;"> SongPlayState Playseat { </span><span style="color: #0000ff;">get</span> { <span style="color: #0000ff;">return</span><span style="color: #000000;"> playseat; } </span><span style="color: #0000ff;">set</span> { playseat =<span style="color: #000000;"> value; } } </span><span style="color: #0000ff;">PRivate</span> <span style="color: #0000ff;">string</span> songName;<span style="color: #008000;">//</span><span style="color: #008000;">歌曲名称字段</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">string</span> songURL;<span style="color: #008000;">//</span><span style="color: #008000;">歌曲存放路径字段 </span><span style="color: #008000;">//</span><span style="color: #008000;">让歌曲的播放状态默认为未播放;</span> <span style="color: #0000ff;">private</span> SongPlayState playseat =<span style="color: #000000;"> SongPlayState.unplayed; </span><span style="color: #008000;">//</span><span style="color: #008000;">把歌曲状态改为已播放</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> SetSongPlayed() { </span><span style="color: #0000ff;">this</span>.playseat =<span style="color: #000000;"> SongPlayState.played; } </span><span style="color: #008000;">//</span><span style="color: #008000;">把歌曲状态改为重唱</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> SetnewSong() { </span><span style="color: #0000ff;">this</span>.playseat =<span style="color: #000000;"> SongPlayState.newplayed; } </span><span style="color: #008000;">//</span><span style="color: #008000;">把歌曲状态改为一切歌</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> Setcut() { </span><span style="color: #0000ff;">this</span>.playseat =<span style="color: #000000;"> SongPlayState.cut; }</span>
PlayList类(播放歌曲的核心内容,功能(实现播放,切歌,重唱)):
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> PlayList { </span><span style="color: #008000;">//</span><span style="color: #008000;">定义一个数组,默认可以储存50首歌</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> Song[] songList=<span style="color: #0000ff;">new</span> Song[<span style="color: #800080;">50</span>];<span style="color: #008000;">//</span><span style="color: #008000;">歌曲播放列表数组</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">int</span> songIndex;<span style="color: #008000;">//</span><span style="color: #008000;">当前播放的歌曲在数组的索引</span> <span style="color: #0000ff;">#region</span> 添加播放歌曲 <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">bool</span><span style="color: #000000;"> AddSong(Song song) { </span><span style="color: #0000ff;">bool</span> happy = <span style="color: #0000ff;">false</span><span style="color: #000000;">; </span><span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = <span style="color: #800080;">0</span>; i ) { <span style="color: #0000ff;">if</span> (songList[i] == <span style="color: #0000ff;">null</span><span style="color: #000000;">) { songList[i] </span>=<span style="color: #000000;"> song; happy </span>= <span style="color: #0000ff;">true</span><span style="color: #000000;">; </span><span style="color: #0000ff;">break</span><span style="color: #000000;">; } } </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> happy; } </span><span style="color: #0000ff;">#endregion</span> <span style="color: #0000ff;">#region</span> 当前播放的歌曲名称 <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">string</span><span style="color: #000000;"> PlayingSongName() { </span><span style="color: #0000ff;">string</span> songName = <span style="color: #800000;">""</span>; <span style="color: #008000;">//</span><span style="color: #008000;"> 歌曲名称</span> <span style="color: #0000ff;">if</span>(songList.Length><span style="color: #000000;">songIndex) { </span><span style="color: #0000ff;">if</span> (songList[songIndex] != <span style="color: #0000ff;">null</span><span style="color: #000000;">) { songName </span>=<span style="color: #000000;"> songList[songIndex].SongName; } } </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> songName; } </span><span style="color: #0000ff;">#endregion</span> <span style="color: #0000ff;">#region</span> 获取当前播放的歌曲 <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span><span style="color: #000000;"> Song GetPlayingSong() { </span><span style="color: #0000ff;">if</span>(songIndexsongList.Length) { <span style="color: #0000ff;">if</span> (songList[songIndex] != <span style="color: #0000ff;">null</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> songList[songIndex]; } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">null</span><span style="color: #000000;">; } } </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">null</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">#endregion</span> <span style="color: #0000ff;">#region</span> 下一首要播放的歌曲名称 <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">string</span><span style="color: #000000;"> NextSongName() { </span><span style="color: #0000ff;">string</span> songName = <span style="color: #800000;">""</span>; <span style="color: #008000;">//</span><span style="color: #008000;"> 歌曲名称</span> <span style="color: #0000ff;">if</span>(songIndexsongList.Length) { <span style="color: #0000ff;">if</span> (songList.Length > songIndex + <span style="color: #800080;">1</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span> (songList[songIndex + <span style="color: #800080;">1</span>] != <span style="color: #0000ff;">null</span><span style="color: #000000;">) { songName </span>= songList[songIndex + <span style="color: #800080;">1</span><span style="color: #000000;">].SongName; } } } </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> songName; } </span><span style="color: #0000ff;">#endregion</span> <span style="color: #0000ff;">#region</span> 切歌: <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> CutSong() { </span><span style="color: #008000;">//</span><span style="color: #008000;">代表切歌的位置</span> <span style="color: #0000ff;">int</span> i =<span style="color: #000000;"> songIndex; </span><span style="color: #0000ff;">if</span> (songList[i]!=<span style="color: #0000ff;">null</span><span style="color: #000000;">) { songList[i].Setcut(); } </span><span style="color: #0000ff;">while</span> (songList[i] != <span style="color: #0000ff;">null</span><span style="color: #000000;">) { songList[i] </span>= songList[i + <span style="color: #800080;">1</span><span style="color: #000000;">]; i</span>++<span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;"> 如果到达数组最后一个元素,就将最后一个元素指向空</span> <span style="color: #0000ff;">if</span> (i ==<span style="color: #000000;"> songList.Length) { songList[i] </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">; } } </span><span style="color: #0000ff;">if</span> (songList[<span style="color: #800080;">0</span>] != <span style="color: #0000ff;">null</span><span style="color: #000000;">) { songList[</span><span style="color: #800080;">0</span>].Playseat =<span style="color: #000000;"> SongPlayState.played; } } </span><span style="color: #0000ff;">#endregion</span> <span style="color: #0000ff;">#region</span> 重放当前歌曲 <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> PlayAgain() { </span><span style="color: #0000ff;">if</span> (songList[songIndex] != <span style="color: #0000ff;">null</span><span style="color: #000000;">) { songList[songIndex].SetnewSong(); } } </span><span style="color: #0000ff;">#endregion</span> <span style="color: #0000ff;">#region</span> 播放下一首 <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> MoveOn() { </span><span style="color: #0000ff;">if</span>(songIndexsongList.Length) { <span style="color: #0000ff;">if</span> (songList[songIndex] != <span style="color: #0000ff;">null</span> && songList[songIndex].Playseat ==<span style="color: #000000;"> SongPlayState.newplayed) { songList[songIndex].SetSongPlayed(); } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { songIndex</span>++<span style="color: #000000;">; } } } </span><span style="color: #0000ff;">#endregion</span><span style="color: #000000;"> }</span>
实现窗体拖动的代码(找到对应事件双击):
<span style="color: #0000ff;">#region</span> 让窗体实现拖动 <span style="color: #0000ff;">public</span> Point mouSEOffset; <span style="color: #008000;">//</span><span style="color: #008000;">记录鼠标指针的坐标 </span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> isMouseDown = <span style="color: #0000ff;">false</span>; <span style="color: #008000;">//</span><span style="color: #008000;">记录鼠标按键是否按下 </span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> FrmMain_MouseDown(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, MouseEventArgs e) { </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> xOffset; </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> yOffset; </span><span style="color: #0000ff;">if</span> (e.Button ==<span style="color: #000000;"> MouseButtons.Left) { xOffset </span>= -e.X -<span style="color: #000000;"> SystemInformation.FrameBorderSize.Width; yOffset </span>= -e.Y - SystemInformation.CaptionHeight -<span style="color: #000000;"> SystemInformation.FrameBorderSize.Height; mouseOffset </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> Point(xOffset, yOffset); isMouseDown </span>= <span style="color: #0000ff;">true</span><span style="color: #000000;">; } } </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> FrmMain_MouseMove(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, MouseEventArgs e) { </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (isMouseDown) { Point mousePos </span>=<span style="color: #000000;"> Control.MousePosition; mousePos.Offset(mouseOffset.X </span>+ <span style="color: #800080;">5</span>, mouseOffset.Y + <span style="color: #800080;">30</span><span style="color: #000000;">); Location </span>=<span style="color: #000000;"> mousePos; } } </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> FrmMain_MouseUp(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, MouseEventArgs e) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 修改鼠标状态isMouseDown的值 </span><span style="color: #008000;">//</span><span style="color: #008000;"> 确保只有鼠标左键按下并移动时,才移动窗体 </span> <span style="color: #0000ff;">if</span> (e.Button ==<span style="color: #000000;"> MouseButtons.Left) { isMouseDown </span>= <span style="color: #0000ff;">false</span><span style="color: #000000;">; } } </span><span style="color: #0000ff;">#endregion</span>
主界面:(FrmMain)
<span style="color: #008000;">//</span><span style="color: #008000;">当前播放的歌曲</span> <span style="color: #0000ff;">public</span><span style="color: #000000;"> Song songname; </span><span style="color: #0000ff;">#region</span> 让窗体实现拖动 <span style="color: #0000ff;">public</span> Point mouseOffset; <span style="color: #008000;">//</span><span style="color: #008000;">记录鼠标指针的坐标 </span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">bool</span> isMouseDown = <span style="color: #0000ff;">false</span>; <span style="color: #008000;">//</span><span style="color: #008000;">记录鼠标按键是否按下 </span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> FrmMain_MouseDown(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, MouseEventArgs e) { </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> xOffset; </span><span style="color: #0000ff;">int</span><span style="color: #000000;"> yOffset; </span><span style="color: #0000ff;">if</span> (e.Button ==<span style="color: #000000;"> MouseButtons.Left) { xOffset </span>= -e.X -<span style="color: #000000;"> SystemInformation.FrameBorderSize.Width; yOffset </span>= -e.Y - SystemInformation.CaptionHeight -<span style="color: #000000;"> SystemInformation.FrameBorderSize.Height; mouseOffset </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> Point(xOffset, yOffset); isMouseDown </span>= <span style="color: #0000ff;">true</span><span style="color: #000000;">; } } </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> FrmMain_MouseMove(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, MouseEventArgs e) { </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (isMouseDown) { Point mousePos </span>=<span style="color: #000000;"> Control.MousePosition; mousePos.Offset(mouseOffset.X </span>+ <span style="color: #800080;">5</span>, mouseOffset.Y + <span style="color: #800080;">30</span><span style="color: #000000;">); Location </span>=<span style="color: #000000;"> mousePos; } } </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> FrmMain_MouseUp(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, MouseEventArgs e) { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 修改鼠标状态isMouseDown的值 </span><span style="color: #008000;">//</span><span style="color: #008000;"> 确保只有鼠标左键按下并移动时,才移动窗体 </span> <span style="color: #0000ff;">if</span> (e.Button ==<span style="color: #000000;"> MouseButtons.Left) { isMouseDown </span>= <span style="color: #0000ff;">false</span><span style="color: #000000;">; } } </span><span style="color: #0000ff;">#endregion</span> <span style="color: #008000;">//</span><span style="color: #008000;"> 点击退出按钮触发的事件</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnexit_Click(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { application.Exit(); } </span><span style="color: #008000;">//</span><span style="color: #008000;"> Login事件</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> FrmMain_Load(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { </span><span style="color: #008000;">//</span><span style="color: #008000;">把整个窗体对象赋给FrmByValue的静态frM对象</span> FrmByValue.frM = <span style="color: #0000ff;">this</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">运行窗体时启动定时器</span> <span style="color: #0000ff;">this</span><span style="color: #000000;">.tilist_played.Start(); </span><span style="color: #008000;">//</span><span style="color: #008000;">调用查询返回路径的方法,传入SQL语句 </span><span style="color: #008000;">//</span><span style="color: #008000;"> 歌曲路径</span> <span style="color: #0000ff;">string</span> sql = <span style="color: #800000;">"</span><span style="color: #800000;">select resource_path from Resource_path where resource_id=1</span><span style="color: #800000;">"</span><span style="color: #000000;">; KtvHelper.songURL </span>=<span style="color: #000000;"> song_path(sql); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 歌手图片路径</span> <span style="color: #0000ff;">string</span> sql1 = <span style="color: #800000;">"</span><span style="color: #800000;">select resource_path from Resource_path where resource_id=2</span><span style="color: #800000;">"</span><span style="color: #000000;">; KtvHelper.singer_photoURL </span>=<span style="color: #000000;"> song_path(sql1); } </span><span style="color: #808080;">///</span> <span style="color: #808080;"><summary></summary></span> <span style="color: #808080;">///</span><span style="color: #008000;"> 查询返回路径的方法 </span><span style="color: #808080;">///</span> <span style="color: #808080;"></span> <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="sql"></span><span style="color: #008000;">传入sql语句</span><span style="color: #808080;"></span> <span style="color: #808080;">///</span> <span style="color: #808080;"><returns></returns></span><span style="color: #008000;">根据传入的sql语句返回不同的路径(1.resource_id=1歌曲路径:resource_id=2歌手图片路径)</span><span style="color: #808080;"></span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">string</span> song_path(<span style="color: #0000ff;">string</span><span style="color: #000000;"> sql) { SqlConnection con </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlConnection(SqlHelper.str); SqlCommand cmd </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlCommand(sql, con); </span><span style="color: #0000ff;">string</span> path = <span style="color: #800000;">""</span><span style="color: #000000;">; </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> { con.Open(); SqlDataReader dr </span>=<span style="color: #000000;"> cmd.ExecuteReader(); </span><span style="color: #0000ff;">if</span> (dr != <span style="color: #0000ff;">null</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (dr.HasRows) { </span><span style="color: #0000ff;">while</span><span style="color: #000000;"> (dr.Read()) { path </span>= dr[<span style="color: #800000;">"</span><span style="color: #800000;">resource_path</span><span style="color: #800000;">"</span><span style="color: #000000;">].ToString(); } } } } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception) { MessageBox.Show(</span><span style="color: #800000;">"</span><span style="color: #800000;">网络异常!</span><span style="color: #800000;">"</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">finally</span><span style="color: #000000;"> { con.Close(); } </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> path; } </span><span style="color: #008000;">//</span><span style="color: #008000;">点击显示播放触发的事件</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnshow_Click(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { </span><span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">this</span>.Width == <span style="color: #800080;">567</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">this</span>.Width = <span style="color: #0000ff;">this</span>.Width + <span style="color: #800080;">208</span><span style="color: #000000;">; btnshow.Text </span>= <span style="color: #800000;">"</span><span style="color: #800000;">隐 藏 播 放</span><span style="color: #800000;">"</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">this</span>.Width > <span style="color: #800080;">567</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">this</span>.Width = <span style="color: #800080;">567</span><span style="color: #000000;">; btnshow.Text </span>= <span style="color: #800000;">"</span><span style="color: #800000;">显 示 播 放</span><span style="color: #800000;">"</span><span style="color: #000000;">; } } </span><span style="color: #008000;">//</span><span style="color: #008000;">已点歌曲窗体</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnopen_Click(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { SelectedSong frm </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SelectedSong(); </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.Hide(); frm.Show(); } </span><span style="color: #008000;">//</span><span style="color: #008000;"> 点击拼音点歌触发的事件</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnspell_Click(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { frmbySongname frm </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> frmbySongname(); </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.Hide(); frm.Show(); } </span><span style="color: #008000;">//</span><span style="color: #008000;">点击字数点歌触发的事件</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnnum_Click(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { frmbyziSong frm </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> frmbyziSong(); </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.Hide(); frm.Show(); } </span><span style="color: #008000;">//</span><span style="color: #008000;">点击类型点歌触发的事件</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btntype_Click(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { frmbyTypesong frm </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> frmbyTypesong(); </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.Hide(); frm.Show(); } </span><span style="color: #008000;">//</span><span style="color: #008000;">定时扫描歌曲列表,显示当前播放歌曲的名称</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> ShowPlayingSongName() { txtopen.Text </span>=<span style="color: #000000;"> PlayList.PlayingSongName(); txtnext.Text </span>=<span style="color: #000000;"> PlayList.NextSongName(); } </span><span style="color: #008000;">//</span><span style="color: #008000;">播放歌曲的方法</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> PlaySong() { </span><span style="color: #008000;">//</span><span style="color: #008000;"> 获取当前要播放的歌曲</span> <span style="color: #0000ff;">this</span>.songname =<span style="color: #000000;"> PlayList.GetPlayingSong(); </span><span style="color: #0000ff;">if</span> (songname != <span style="color: #0000ff;">null</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">#region</span> 播放时显示歌曲图片 <span style="color: #0000ff;">string</span> name =<span style="color: #000000;"> songname.SongName; </span><span style="color: #0000ff;">string</span> sql = <span style="color: #800000;">"</span><span style="color: #800000;">select singer_id from song_info where song_name ='</span><span style="color: #800000;">"</span> + name + <span style="color: #800000;">"</span><span style="color: #800000;">' </span><span style="color: #800000;">"</span><span style="color: #000000;">; SqlConnection con </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlConnection(SqlHelper.str); con.Open(); SqlCommand cmd </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlCommand(sql, con); </span><span style="color: #0000ff;">int</span> singerid =<span style="color: #000000;"> Convert.ToInt32(cmd.ExecuteScalar()); con.Close(); </span><span style="color: #0000ff;">string</span> sql1 = <span style="color: #800000;">"</span><span style="color: #800000;">select singer_photo from singer_info where singer_id=</span><span style="color: #800000;">"</span> + singerid + <span style="color: #800000;">""</span><span style="color: #000000;">; SqlConnection con1 </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlConnection(SqlHelper.str); con1.Open(); SqlCommand cmd1 </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlCommand(sql1, con1); </span><span style="color: #0000ff;">string</span> singer_photo =<span style="color: #000000;"> cmd1.ExecuteScalar().ToString(); con1.Close(); plist.Image </span>= Image.FromFile(KtvHelper.singer_photoURL +<span style="color: #000000;"> singer_photo); </span><span style="color: #0000ff;">#endregion</span> <span style="color: #008000;">//</span><span style="color: #008000;"> 将当前歌曲播放状态设为已播放</span> <span style="color: #0000ff;">this</span><span style="color: #000000;">.songname.SetSongPlayed(); </span><span style="color: #008000;">//</span><span style="color: #008000;"> 得到当前播放歌曲的路径</span> Playerlist.URL = KtvHelper.songURL +<span style="color: #000000;"> songname.SongURL; } } </span><span style="color: #008000;">//</span><span style="color: #008000;">计时器控件的Tick事件</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> tilist_played_Tick(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { ShowPlayingSongName(); </span><span style="color: #0000ff;">if</span>(<span style="color: #0000ff;">this</span>.songname==<span style="color: #0000ff;">null</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.PlaySong(); } </span><span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">this</span>.Playerlist.playState ==<span style="color: #000000;"> WMPLib.WMPPlayState.wmppsStopped) { </span><span style="color: #0000ff;">this</span>.songname = <span style="color: #0000ff;">null</span><span style="color: #000000;">; PlayList.MoveOn(); } </span><span style="color: #0000ff;">if</span>(<span style="color: #0000ff;">this</span>.songname!=<span style="color: #0000ff;">null</span>&&<span style="color: #0000ff;">this</span>.songname.Playseat==<span style="color: #000000;">SongPlayState.cut) { </span><span style="color: #0000ff;">this</span>.Playerlist.URL = <span style="color: #800000;">""</span><span style="color: #000000;">; </span><span style="color: #0000ff;">this</span>.songname = <span style="color: #0000ff;">null</span><span style="color: #000000;">; } </span><span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">this</span>.songname != <span style="color: #0000ff;">null</span> && <span style="color: #0000ff;">this</span>.songname.Playseat ==<span style="color: #000000;"> SongPlayState.newplayed) { </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.PlaySong(); } } </span><span style="color: #008000;">//</span><span style="color: #008000;">点击切歌触发的事件</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnnextsong_Click(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { </span><span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">this</span>.songname != <span style="color: #0000ff;">null</span><span style="color: #000000;">) { PlayList.CutSong(); } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { MessageBox.Show(</span><span style="color: #800000;">"</span><span style="color: #800000;">亲!你还没有添加歌曲</span><span style="color: #800000;">"</span><span style="color: #000000;">); } } </span><span style="color: #008000;">//</span><span style="color: #008000;">点击重唱触发的事件</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnnew_Click(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { </span><span style="color: #0000ff;">if</span> (<span style="color: #0000ff;">this</span>.songname != <span style="color: #0000ff;">null</span><span style="color: #000000;">) { PlayList.PlayAgain(); } </span><span style="color: #0000ff;">else</span><span style="color: #000000;"> { MessageBox.Show(</span><span style="color: #800000;">"</span><span style="color: #800000;">亲!你还没有添加歌曲</span><span style="color: #800000;">"</span><span style="color: #000000;">); } } </span><span style="color: #008000;">//</span><span style="color: #008000;">点击金曲排行触发的时间</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnorderby_Click(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { frmsonglist frm </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> frmsonglist(); frm.ph </span>= <span style="color: #800080;">1</span><span style="color: #000000;">; </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.Hide(); frm.Show(); } </span><span style="color: #008000;">//</span><span style="color: #008000;">歌星点歌</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnswan_Click_1(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { Frmbyswangetsong frm </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> Frmbyswangetsong(); frm.Show(); </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.Hide(); } </span><span style="color: #008000;">//</span><span style="color: #008000;">当鼠标进入控件可见状态是触发的事件</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnswan_MouseEnter(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { ToolTip tp </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ToolTip(); tp.ShowAlways </span>= <span style="color: #0000ff;">true</span><span style="color: #000000;">; tp.SetToolTip(btnswan,</span><span style="color: #800000;">"</span><span style="color: #800000;">歌星点歌</span><span style="color: #800000;">"</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnspell_MouseEnter(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { ToolTip tp </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ToolTip(); tp.ShowAlways </span>= <span style="color: #0000ff;">true</span><span style="color: #000000;">; tp.SetToolTip(btnspell, </span><span style="color: #800000;">"</span><span style="color: #800000;">拼音点歌</span><span style="color: #800000;">"</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnnum_MouseEnter(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { ToolTip tp </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ToolTip(); tp.ShowAlways </span>= <span style="color: #0000ff;">true</span><span style="color: #000000;">; tp.SetToolTip(btnnum, </span><span style="color: #800000;">"</span><span style="color: #800000;">字数点歌</span><span style="color: #800000;">"</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btntype_MouseEnter(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { ToolTip tp </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ToolTip(); tp.ShowAlways </span>= <span style="color: #0000ff;">true</span><span style="color: #000000;">; tp.SetToolTip(btntype, </span><span style="color: #800000;">"</span><span style="color: #800000;">类型选择</span><span style="color: #800000;">"</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnorderby_MouseEnter(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { ToolTip tp </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ToolTip(); tp.ShowAlways </span>= <span style="color: #0000ff;">true</span><span style="color: #000000;">; tp.SetToolTip(btnorderby, </span><span style="color: #800000;">"</span><span style="color: #800000;">金曲排行</span><span style="color: #800000;">"</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnnew_MouseEnter(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { ToolTip tp </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ToolTip(); tp.ShowAlways </span>= <span style="color: #0000ff;">true</span><span style="color: #000000;">; tp.SetToolTip(btnnew, </span><span style="color: #800000;">"</span><span style="color: #800000;">重唱</span><span style="color: #800000;">"</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnnextsong_MouseEnter(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { ToolTip tp </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ToolTip(); tp.ShowAlways </span>= <span style="color: #0000ff;">true</span><span style="color: #000000;">; tp.SetToolTip(btnnextsong, </span><span style="color: #800000;">"</span><span style="color: #800000;">切歌</span><span style="color: #800000;">"</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnopen_MouseEnter(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { ToolTip tp </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ToolTip(); tp.ShowAlways </span>= <span style="color: #0000ff;">true</span><span style="color: #000000;">; tp.SetToolTip(btnopen, </span><span style="color: #800000;">"</span><span style="color: #800000;">已点</span><span style="color: #800000;">"</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnfw_MouseEnter(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { ToolTip tp </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ToolTip(); tp.ShowAlways </span>= <span style="color: #0000ff;">true</span><span style="color: #000000;">; tp.SetToolTip(btnfw, </span><span style="color: #800000;">"</span><span style="color: #800000;">服务</span><span style="color: #800000;">"</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnexit_MouseEnter(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { ToolTip tp </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ToolTip(); tp.ShowAlways </span>= <span style="color: #0000ff;">true</span><span style="color: #000000;">; tp.SetToolTip(btnexit, </span><span style="color: #800000;">"</span><span style="color: #800000;">退出</span><span style="color: #800000;">"</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnfw_Click(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { MessageBox.Show(</span><span style="color: #800000;">"</span><span style="color: #800000;">正在呼叫服务...</span><span style="color: #800000;">"</span><span style="color: #000000;">); }</span>
歌星点歌(Frmbyswangetsong):
<span style="color: #008000;">//</span><span style="color: #008000;">图片索引</span> <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> index=<span style="color: #800080;">0</span><span style="color: #000000;">; </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">int</span> index_singer = <span style="color: #800080;">0</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">Load事件</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> Frmbyswangetsong_Load(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { </span><span style="color: #008000;">//</span><span style="color: #008000;">在显示当前窗体时,让第二个lvlisttwo和第三个lvlistthere控件不显示</span> lvlisttwo.Visible = <span style="color: #0000ff;">false</span><span style="color: #000000;">; lvlistthere.Visible </span>= <span style="color: #0000ff;">false</span><span style="color: #000000;">; </span><span style="color: #0000ff;">#region</span> 给第一个listview绑定数据 <span style="color: #008000;">//</span><span style="color: #008000;">给listview1绑定数据和图片</span> ListViewItem lv = <span style="color: #0000ff;">new</span> ListViewItem(<span style="color: #800000;">"</span><span style="color: #800000;">组合</span><span style="color: #800000;">"</span>, <span style="color: #800080;">0</span><span style="color: #000000;">); lv.Tag </span>= <span style="color: #800000;">"</span><span style="color: #800000;">组合</span><span style="color: #800000;">"</span><span style="color: #000000;">; ListViewItem lv1 </span>= <span style="color: #0000ff;">new</span> ListViewItem(<span style="color: #800000;">"</span><span style="color: #800000;">女歌手</span><span style="color: #800000;">"</span>, <span style="color: #800080;">1</span><span style="color: #000000;">); lv1.Tag </span>= <span style="color: #800000;">"</span><span style="color: #800000;">女</span><span style="color: #800000;">"</span><span style="color: #000000;">; ListViewItem lv2 </span>= <span style="color: #0000ff;">new</span> ListViewItem(<span style="color: #800000;">"</span><span style="color: #800000;">男歌手</span><span style="color: #800000;">"</span>, <span style="color: #800080;">2</span><span style="color: #000000;">); lv2.Tag </span>= <span style="color: #800000;">"</span><span style="color: #800000;">男</span><span style="color: #800000;">"</span><span style="color: #000000;">; lvlistone.Items.Add(lv); lvlistone.Items.Add(lv1); lvlistone.Items.Add(lv2); </span><span style="color: #0000ff;">#endregion</span><span style="color: #000000;"> } </span><span style="color: #008000;">//</span><span style="color: #008000;">点击lvlistone中项时触发的事件</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> lvlistone_Click(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { </span><span style="color: #008000;">//</span><span style="color: #008000;">如果没有选中lvlistone控件中的任何一项是不会显示第二个窗体 </span><span style="color: #008000;">//</span><span style="color: #008000;">让第二个出现的lvlisttwo和lvlistone显示在同一个位置</span> lvlisttwo.Location =<span style="color: #000000;"> lvlistone.Location; </span><span style="color: #008000;">//</span><span style="color: #008000;">如果选中一项,就把第二个llvlisttwo显示出来 </span><span style="color: #008000;">//</span><span style="color: #008000;">让第二个lvlisttwo显示</span> lvlisttwo.Visible = <span style="color: #0000ff;">true</span><span style="color: #000000;">; </span><span style="color: #0000ff;">if</span> (lvlistone.SelectedItems[<span style="color: #800080;">0</span>] != <span style="color: #0000ff;">null</span><span style="color: #000000;">) { </span><span style="color: #008000;">//</span><span style="color: #008000;">给第二个listview控件动态绑定数据的方法</span> <span style="color: #000000;"> lvlisttwoadd(); } } </span><span style="color: #008000;">//</span><span style="color: #008000;">给第二个listview控件动态绑定数据的方法lvlisttwoadd();</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> lvlisttwoadd() { SqlConnection con </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlConnection(SqlHelper.str); </span><span style="color: #0000ff;">string</span> sql = <span style="color: #800000;">"</span><span style="color: #800000;">select * from singer_type</span><span style="color: #800000;">"</span><span style="color: #000000;">; SqlCommand cmd </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlCommand(sql, con); </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> { con.Open(); SqlDataReader dr </span>=<span style="color: #000000;"> cmd.ExecuteReader(); </span><span style="color: #0000ff;">if</span> (dr != <span style="color: #0000ff;">null</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span><span style="color: #000000;"> (dr.HasRows) { </span><span style="color: #0000ff;">while</span><span style="color: #000000;"> (dr.Read()) { </span><span style="color: #0000ff;">string</span> singertype_group = dr[<span style="color: #800000;">"</span><span style="color: #800000;">singertype_name</span><span style="color: #800000;">"</span><span style="color: #000000;">].ToString(); </span><span style="color: #0000ff;">int</span> id = Convert.ToInt32(dr[<span style="color: #800000;">"</span><span style="color: #800000;">singertype_id</span><span style="color: #800000;">"</span><span style="color: #000000;">]); ListViewItem lv </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ListViewItem(); lv.ImageIndex </span>= index++<span style="color: #000000;">; lv.Text </span>=<span style="color: #000000;"> singertype_group; lv.Tag</span>=<span style="color: #000000;"> id; </span><span style="color: #008000;">//</span><span style="color: #008000;"> MessageBox.Show(lvlisttwo.Tag.ToString());</span> <span style="color: #000000;"> lvlisttwo.Items.Add(lv); } } } } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception) { MessageBox.Show(</span><span style="color: #800000;">"</span><span style="color: #800000;">网络异常!</span><span style="color: #800000;">"</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">finally</span><span style="color: #000000;"> { con.Close(); } } </span><span style="color: #008000;">//</span><span style="color: #008000;"> 03点击lvlisttwo中项时触发的事件</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> lvlisttwo_Click(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { lvlistthere.Items.Clear(); </span><span style="color: #008000;">//</span><span style="color: #008000;">如果没有选中lvlisttwo控件中的任何一项是不会显示第三个窗体 </span><span style="color: #008000;">//</span><span style="color: #008000;">如果选中一项,就把第二个llvlistthere显示出来</span> <span style="color: #0000ff;">if</span> (lvlisttwo.SelectedItems[<span style="color: #800080;">0</span>] != <span style="color: #0000ff;">null</span><span style="color: #000000;">) { lvlisttwo.Visible </span>= <span style="color: #0000ff;">false</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">让第三个出现的lvlistthere和lvlistone显示在同一个位置</span> lvlistthere.Location =<span style="color: #000000;"> lvlistone.Location; </span><span style="color: #008000;">//</span><span style="color: #008000;">让第三个lvlistthere显示</span> lvlistthere.Visible = <span style="color: #0000ff;">true</span><span style="color: #000000;">; </span><span style="color: #008000;">//</span><span style="color: #008000;">获取用户点击第一个listview是男歌手还是女歌手或者是组合</span> <span style="color: #0000ff;">string</span> singer_group = lvlistone.SelectedItems[<span style="color: #800080;">0</span><span style="color: #000000;">].Tag.ToString(); </span><span style="color: #008000;">//</span><span style="color: #008000;">获取用户点击点击第二个listview是哪个地区的id</span> <span style="color: #0000ff;">int</span> cityid = Convert.ToInt32(lvlisttwo.SelectedItems[<span style="color: #800080;">0</span><span style="color: #000000;">].Tag); SqlConnection con </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlConnection(SqlHelper.str); </span><span style="color: #0000ff;">string</span> sql = <span style="color: #800000;">"</span><span style="color: #800000;">select singer_name,singer_photo from singer_info where singer_sex ='</span><span style="color: #800000;">"</span> + singer_group + <span style="color: #800000;">"</span><span style="color: #800000;">' and singertype_id=</span><span style="color: #800000;">"</span>+cityid+<span style="color: #800000;">"</span> <span style="color: #800000;">"</span><span style="color: #000000;">; SqlCommand cmd </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> SqlCommand(sql,con); </span><span style="color: #0000ff;">try</span><span style="color: #000000;"> { con.Open(); SqlDataReader dr</span>=<span style="color: #000000;"> cmd.ExecuteReader(); </span><span style="color: #0000ff;">if</span>(dr!=<span style="color: #0000ff;">null</span><span style="color: #000000;">) { </span><span style="color: #0000ff;">if</span><span style="color: #000000;">(dr.HasRows) { </span><span style="color: #0000ff;">while</span><span style="color: #000000;"> (dr.Read()) { </span><span style="color: #008000;">//</span><span style="color: #008000;">获取到歌手姓名和歌手图片路径</span> <span style="color: #0000ff;">string</span> singer_name = dr[<span style="color: #800000;">"</span><span style="color: #800000;">singer_name</span><span style="color: #800000;">"</span><span style="color: #000000;">].ToString(); </span><span style="color: #0000ff;">string</span> singer_photo_url = dr[<span style="color: #800000;">"</span><span style="color: #800000;">singer_photo</span><span style="color: #800000;">"</span><span style="color: #000000;">].ToString(); </span><span style="color: #008000;">//</span><span style="color: #008000;">并接路径</span> <span style="color: #0000ff;">string</span> URL = KtvHelper.singer_photoURL +<span style="color: #000000;"> singer_photo_url; imgsingerinfo .Images.Add(Image.FromFile(URL)); ListViewItem lv </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ListViewItem(); lv.Text </span>=<span style="color: #000000;"> singer_name; lv.ImageIndex </span>=index_singer++<span style="color: #000000;">; lvlistthere.Items.Add(lv); } } } } </span><span style="color: #0000ff;">catch</span><span style="color: #000000;"> (Exception) { MessageBox.Show(</span><span style="color: #800000;">"</span><span style="color: #800000;">网络异常!</span><span style="color: #800000;">"</span><span style="color: #000000;">); } </span><span style="color: #0000ff;">finally</span><span style="color: #000000;"> { con.Close(); } } } </span><span style="color: #008000;">//</span><span style="color: #008000;">点击按钮主界面触发的事件</span> <span style="color: #0000ff;">private</span> <span style="color: #0000ff;">void</span> btnmain_Click(<span style="color: #0000ff;">object</span><span style="color: #000000;"> sender, EventArgs e) { FrmByValue.frM.Show(); </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.Close(); } </span>

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Viele Mac-Benutzer neigen dazu, den Standardnamen ihres Geräts beizubehalten und denken möglicherweise nie darüber nach, ihn zu ändern. Viele Leute entscheiden sich dafür, den Namen aus der Ersteinrichtung beizubehalten, beispielsweise „Johnnys MacBook Air“ oder einfach „iMac“. Zu lernen, wie Sie den Namen Ihres Mac ändern, ist eine sehr nützliche Fähigkeit, insbesondere wenn Sie über mehrere Geräte verfügen, da Sie diese schnell unterscheiden und verwalten können. Als Nächstes zeigen wir Ihnen Schritt für Schritt, wie Sie den Computernamen, den Hostnamen und den Bonjour-Namen (lokaler Hostname) im macOS-System ändern. Warum sollten Sie Ihren Mac-Namen ändern? Das Ändern des Namens Ihres Mac kann nicht nur Ihre Persönlichkeit zeigen, sondern auch dazu beitragen, das Benutzererlebnis zu verbessern: Personalisieren Sie Ihren Mac: Der Standardname entspricht möglicherweise nicht Ihrem Geschmack. Ändern Sie ihn in einen Namen, der Ihnen gefällt.

Die allgemeine Matrixmultiplikation (GEMM) ist ein wesentlicher Bestandteil vieler Anwendungen und Algorithmen und außerdem einer der wichtigen Indikatoren zur Bewertung der Leistung der Computerhardware. Eingehende Forschung und Optimierung der Implementierung von GEMM können uns helfen, Hochleistungsrechnen und die Beziehung zwischen Software- und Hardwaresystemen besser zu verstehen. In der Informatik kann eine effektive Optimierung von GEMM die Rechengeschwindigkeit erhöhen und Ressourcen einsparen, was für die Verbesserung der Gesamtleistung eines Computersystems von entscheidender Bedeutung ist. Ein tiefgreifendes Verständnis des Funktionsprinzips und der Optimierungsmethode von GEMM wird uns helfen, das Potenzial moderner Computerhardware besser zu nutzen und effizientere Lösungen für verschiedene komplexe Computeraufgaben bereitzustellen. Durch Optimierung der Leistung von GEMM

Am 29. Juli nahm Yu Chengdong, Huawei-Geschäftsführer, Vorsitzender von Terminal BG und Vorsitzender von Smart Car Solutions BU, an der Übergabezeremonie des 400.000sten Neuwagens von AITO Wenjie teil, hielt eine Rede und kündigte an, dass die Modelle der Wenjie-Serie dies tun werden Dieses Jahr auf den Markt kommen Im August wurde die Huawei Qiankun ADS 3.0-Version auf den Markt gebracht und es ist geplant, die Upgrades sukzessive von August bis September voranzutreiben. Das Xiangjie S9, das am 6. August auf den Markt kommt, wird erstmals mit dem intelligenten Fahrsystem ADS3.0 von Huawei ausgestattet sein. Mit Hilfe von Lidar wird Huawei Qiankun ADS3.0 seine intelligenten Fahrfähigkeiten erheblich verbessern, über integrierte End-to-End-Funktionen verfügen und eine neue End-to-End-Architektur von GOD (allgemeine Hinderniserkennung)/PDP (prädiktiv) einführen Entscheidungsfindung und Kontrolle), Bereitstellung der NCA-Funktion für intelligentes Fahren von Parkplatz zu Parkplatz und Aktualisierung von CAS3.0

Fermats letzter Satz steht kurz davor, von der KI erobert zu werden? Und das Bedeutsamste an der ganzen Sache ist, dass der letzte Satz von Fermat, den die KI gerade lösen wird, genau dazu dient, zu beweisen, dass KI nutzlos ist. Früher gehörte die Mathematik zum Bereich der reinen menschlichen Intelligenz; heute wird dieses Gebiet von fortschrittlichen Algorithmen entschlüsselt und mit Füßen getreten. Bild Der letzte Satz von Fermat ist ein „berüchtigtes“ Rätsel, das Mathematikern seit Jahrhunderten Rätsel aufgibt. Es wurde 1993 bewiesen, und jetzt haben Mathematiker einen großen Plan: den Beweis mithilfe von Computern nachzubilden. Sie hoffen, dass etwaige logische Fehler in dieser Version des Beweises durch einen Computer überprüft werden können. Projektadresse: https://github.com/riccardobrasca/flt

Titel: Erfahren Sie mehr über PyCharm: Eine effiziente Möglichkeit, Projekte zu löschen. In den letzten Jahren wurde Python als leistungsstarke und flexible Programmiersprache von immer mehr Entwicklern bevorzugt. Bei der Entwicklung von Python-Projekten ist es entscheidend, eine effiziente integrierte Entwicklungsumgebung zu wählen. Als leistungsstarke integrierte Entwicklungsumgebung stellt PyCharm Python-Entwicklern viele praktische Funktionen und Tools zur Verfügung, darunter das schnelle und effiziente Löschen von Projektverzeichnissen. Im Folgenden konzentrieren wir uns auf die Verwendung von delete in PyCharm

PyCharm ist eine leistungsstarke integrierte Python-Entwicklungsumgebung, die eine Fülle von Entwicklungstools und Umgebungskonfigurationen bietet und es Entwicklern ermöglicht, Code effizienter zu schreiben und zu debuggen. Bei der Verwendung von PyCharm für die Python-Projektentwicklung müssen wir manchmal das Projekt in eine ausführbare EXE-Datei packen, um es auf einem Computer auszuführen, auf dem keine Python-Umgebung installiert ist. In diesem Artikel wird erläutert, wie Sie mit PyCharm ein Projekt in eine ausführbare EXE-Datei konvertieren, und es werden spezifische Codebeispiele aufgeführt. Kopf

Die beste Version des Apple 16-Systems ist iOS16.1.4. Die beste Version des iOS16-Systems kann von Person zu Person unterschiedlich sein. Die Ergänzungen und Verbesserungen im täglichen Nutzungserlebnis wurden auch von vielen Benutzern gelobt. Welche Version des Apple 16-Systems ist die beste? Antwort: iOS16.1.4 Die beste Version des iOS 16-Systems kann von Person zu Person unterschiedlich sein. Öffentlichen Informationen zufolge gilt iOS16, das 2022 auf den Markt kam, als eine sehr stabile und leistungsstarke Version, und die Benutzer sind mit dem Gesamterlebnis recht zufrieden. Darüber hinaus wurden die neuen Funktionen und Verbesserungen des täglichen Nutzungserlebnisses in iOS16 von vielen Benutzern gut angenommen. Insbesondere in Bezug auf die aktualisierte Akkulaufzeit, Signalleistung und Heizungssteuerung war das Feedback der Benutzer relativ positiv. Betrachtet man jedoch das iPhone14

Am 11. April kündigte Huawei erstmals offiziell den 100-Maschinen-Upgradeplan für HarmonyOS 4.2 an. Dieses Mal werden mehr als 180 Geräte an dem Upgrade teilnehmen, darunter Mobiltelefone, Tablets, Uhren, Kopfhörer, Smart-Screens und andere Geräte. Im vergangenen Monat haben mit dem stetigen Fortschritt des HarmonyOS4.2-Upgradeplans für 100 Maschinen auch viele beliebte Modelle, darunter Huawei Pocket2, Huawei MateX5-Serie, Nova12-Serie, Huawei Pura-Serie usw., mit der Aktualisierung und Anpassung begonnen, was bedeutet, dass dass es mehr Benutzer von Huawei-Modellen geben wird, die das gemeinsame und oft neue Erlebnis von HarmonyOS genießen können. Den Rückmeldungen der Benutzer zufolge hat sich das Erlebnis der Modelle der Huawei Mate60-Serie nach dem Upgrade von HarmonyOS4.2 in allen Aspekten verbessert. Vor allem Huawei M
