Home php教程 php手册 MyKTV project summary

MyKTV project summary

Jul 06, 2016 pm 01:30 PM
name Summarize guide system project

Project name: KTV song request system - Instructor Yuan Yuming finally completed my KTV project after more than a week. To be honest, I gained a lot from doing this project, and there were many difficulties. However, After many hardships, I finally came through. Not simple! This project is mainly divided into front and backend. The main functions implemented by the front desk are: song requests from singers, pinyin

                                                                                                                                                                    --Instructor Yuan Yuming

After more than a week, I finally completed my

KTV project. To be honest, I gained a lot from doing this project, and there were many difficulties. But after many hardships, I finally succeeded. It's coming. Not simple!

This project is mainly divided into front and backend. The main functions implemented by the front desk are: singer song request, pinyin song request, character number song request,

Genre selection, golden song ranking, some cut songs, duets, list of ordered songs, these are the main functions.

The main functions implemented in the background are: adding singers, adding songs, modifying song paths, and modifying singer picture paths.

First look at the front desk:

Frontend core class:

SqlHelper

class (responsible for connecting to the database):

KtvHelper

class (
 <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>;
Copy after login
directory where songs are saved; directory where singer pictures are saved)

Song class (song information and a switch to achieve song status(

Played
 <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;
Copy after login

;Not played; Replay;Cut song)):

PlayList class (plays the core content of songs, functions

(
 <span   style="max-width:90%">//</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>
Copy after login

to implement playback, cut songs,Reprise)):

Code to implement form dragging (find the corresponding event and double-click):

Main interface: (
<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 < songList.Length; i++<span style="color: #000000;">)
           {
               </span><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>(songIndex<<span style="color: #000000;">songList.Length)
             {
                 </span><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>(songIndex<<span style="color: #000000;">songList.Length)
             {
                 </span><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>(songIndex<<span style="color: #000000;">songList.Length)
             {
                 </span><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>
Copy after login
FrmMain

)
<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>
Copy after login

Song star request song (

Frmbyswangetsong

):
 <span   style="max-width:90%">//</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>
        <span style="color: #808080;">///</span><span style="color: #008000;"> 查询返回路径的方法
        </span><span style="color: #808080;">///</span> <span style="color: #808080;"></summary></span>
        <span style="color: #808080;">///</span> <span style="color: #808080;"><param name="sql"></span><span style="color: #008000;">传入sql语句</span><span style="color: #808080;"></param></span>
        <span style="color: #808080;">///</span> <span style="color: #808080;"><returns></span><span style="color: #008000;">根据传入的sql语句返回不同的路径(1.resource_id=1歌曲路径:resource_id=2歌手图片路径)</span><span style="color: #808080;"></returns></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>
Copy after login

 <span style="color: #008000;">//</span><span style="color: #008000;">Image Index</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 event</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;">When displaying the current form, let the second lvlisttwo and third lvlistthere controls not be displayed</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> Bind data to the first listview
            <span style="color: #008000;">//</span><span style="color: #008000;">Bind data and pictures to listview1</span>
            ListViewItem lv = <span style="color: #0000ff;">new</span> ListViewItem(<span style="color: #800000;">"</span><span style="color: #800000;">combination</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;">combination</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;">Female Singer</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;">Female</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;">Male singer</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;">Male</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;">Event triggered when clicking on the item in 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;">If no item in the lvlistone control is selected, the second form will not be displayed.
            </span><span style="color: #008000;">//</span><span style="color: #008000;">Let the second appearing lvlisttwo and lvlistone be displayed at the same position</span>
            lvlisttwo.Location =<span style="color: #000000;"> lvlistone.Location;
            </span><span style="color: #008000;">//</span><span style="color: #008000;">If one item is selected, the second llvlisttwo will be displayed.
            </span><span style="color: #008000;">//</span><span style="color: #008000;">Let the second lvlisttwo display </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;">How to dynamically bind data to the second listview control</span>
<span style="color: #000000;"> lvlisttwoadd();
               
            }
           
        }</span><span style="color: #008000;">//</span><span style="color: #008000;">The method of dynamically binding data to the second listview control 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;">Network abnormality!</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 Event triggered when clicking on the item in 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;">If no item in the lvlisttwo control is selected, the third form will not be displayed.
            </span><span style="color: #008000;">//</span><span style="color: #008000;">If an item is selected, the second llvlistthere will be displayed </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;">Let the third lvlistthere and lvlistone appear in the same position</span>
                lvlistthere.Location =<span style="color: #000000;"> lvlistone.Location;
                </span><span style="color: #008000;">//</span><span style="color: #008000;">Let the third lvlistthere display </span>
                lvlistthere.Visible = <span style="color: #0000ff;">true</span><span style="color: #000000;">;
                </span><span style="color: #008000;">//</span><span style="color: #008000;">Get whether the first listview clicked by the user is a male singer, female singer or group</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;">Get the id of which region the user clicks on the second listview</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;">Get the singer’s name and singer picture path</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;">Joint path</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;">Network abnormality!</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;">Events triggered by clicking the button on the main interface</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>
Copy after login
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

3 tips to easily customize your Mac computer name, host name and Bonjour name 3 tips to easily customize your Mac computer name, host name and Bonjour name Mar 06, 2024 pm 12:20 PM

Many Mac users tend to keep the default name of their device and may never consider changing it. Many people choose to stick with the name from the initial setup, such as "Johnny's MacBook Air" or simply "iMac." Learning how to change the name of your Mac is a very useful skill, especially when you have multiple devices, as it can help you quickly distinguish and manage them. Next, we will teach you step by step how to change the computer name, host name and Bonjour name (local host name) in macOS system. Why should you change your Mac name? Changing the name of your Mac can not only show your personality, but also help improve the user experience: Personalize your Mac: The default name may not be to your taste, change it to a name you like.

CUDA's universal matrix multiplication: from entry to proficiency! CUDA's universal matrix multiplication: from entry to proficiency! Mar 25, 2024 pm 12:30 PM

General Matrix Multiplication (GEMM) is a vital part of many applications and algorithms, and is also one of the important indicators for evaluating computer hardware performance. In-depth research and optimization of the implementation of GEMM can help us better understand high-performance computing and the relationship between software and hardware systems. In computer science, effective optimization of GEMM can increase computing speed and save resources, which is crucial to improving the overall performance of a computer system. An in-depth understanding of the working principle and optimization method of GEMM will help us better utilize the potential of modern computing hardware and provide more efficient solutions for various complex computing tasks. By optimizing the performance of GEMM

Huawei's Qiankun ADS3.0 intelligent driving system will be launched in August and will be launched on Xiangjie S9 for the first time Huawei's Qiankun ADS3.0 intelligent driving system will be launched in August and will be launched on Xiangjie S9 for the first time Jul 30, 2024 pm 02:17 PM

On July 29, at the roll-off ceremony of AITO Wenjie's 400,000th new car, Yu Chengdong, Huawei's Managing Director, Chairman of Terminal BG, and Chairman of Smart Car Solutions BU, attended and delivered a speech and announced that Wenjie series models will be launched this year In August, Huawei Qiankun ADS 3.0 version was launched, and it is planned to successively push upgrades from August to September. The Xiangjie S9, which will be released on August 6, will debut Huawei’s ADS3.0 intelligent driving system. With the assistance of lidar, Huawei Qiankun ADS3.0 version will greatly improve its intelligent driving capabilities, have end-to-end integrated capabilities, and adopt a new end-to-end architecture of GOD (general obstacle identification)/PDP (predictive decision-making and control) , providing the NCA function of smart driving from parking space to parking space, and upgrading CAS3.0

Can AI conquer Fermat's last theorem? Mathematician gave up 5 years of his career to turn 100 pages of proof into code Can AI conquer Fermat's last theorem? Mathematician gave up 5 years of his career to turn 100 pages of proof into code Apr 09, 2024 pm 03:20 PM

Fermat's last theorem, about to be conquered by AI? And the most meaningful part of the whole thing is that Fermat’s Last Theorem, which AI is about to solve, is precisely to prove that AI is useless. Once upon a time, mathematics belonged to the realm of pure human intelligence; now, this territory is being deciphered and trampled by advanced algorithms. Image Fermat's Last Theorem is a "notorious" puzzle that has puzzled mathematicians for centuries. It was proven in 1993, and now mathematicians have a big plan: to recreate the proof using computers. They hope that any logical errors in this version of the proof can be checked by a computer. Project address: https://github.com/riccardobrasca/flt

A closer look at PyCharm: a quick way to delete projects A closer look at PyCharm: a quick way to delete projects Feb 26, 2024 pm 04:21 PM

Title: Learn more about PyCharm: An efficient way to delete projects. In recent years, Python, as a powerful and flexible programming language, has been favored by more and more developers. In the development of Python projects, it is crucial to choose an efficient integrated development environment. As a powerful integrated development environment, PyCharm provides Python developers with many convenient functions and tools, including deleting project directories quickly and efficiently. The following will focus on how to use delete in PyCharm

PyCharm Practical Tips: Convert Project to Executable EXE File PyCharm Practical Tips: Convert Project to Executable EXE File Feb 23, 2024 am 09:33 AM

PyCharm is a powerful Python integrated development environment that provides a wealth of development tools and environment configurations, allowing developers to write and debug code more efficiently. In the process of using PyCharm for Python project development, sometimes we need to package the project into an executable EXE file to run on a computer that does not have a Python environment installed. This article will introduce how to use PyCharm to convert a project into an executable EXE file, and give specific code examples. head

Which version of Apple 16 system is the best? Which version of Apple 16 system is the best? Mar 08, 2024 pm 05:16 PM

The best version of the Apple 16 system is iOS16.1.4. The best version of the iOS16 system may vary from person to person. The additions and improvements in daily use experience have also been praised by many users. Which version of the Apple 16 system is the best? Answer: iOS16.1.4 The best version of the iOS 16 system may vary from person to person. According to public information, iOS16, launched in 2022, is considered a very stable and performant version, and users are quite satisfied with its overall experience. In addition, the addition of new features and improvements in daily use experience in iOS16 have also been well received by many users. Especially in terms of updated battery life, signal performance and heating control, user feedback has been relatively positive. However, considering iPhone14

Always new! Huawei Mate60 series upgrades to HarmonyOS 4.2: AI cloud enhancement, Xiaoyi Dialect is so easy to use Always new! Huawei Mate60 series upgrades to HarmonyOS 4.2: AI cloud enhancement, Xiaoyi Dialect is so easy to use Jun 02, 2024 pm 02:58 PM

On April 11, Huawei officially announced the HarmonyOS 4.2 100-machine upgrade plan for the first time. This time, more than 180 devices will participate in the upgrade, covering mobile phones, tablets, watches, headphones, smart screens and other devices. In the past month, with the steady progress of the HarmonyOS4.2 100-machine upgrade plan, many popular models including Huawei Pocket2, Huawei MateX5 series, nova12 series, Huawei Pura series, etc. have also started to upgrade and adapt, which means that there will be More Huawei model users can enjoy the common and often new experience brought by HarmonyOS. Judging from user feedback, the experience of Huawei Mate60 series models has improved in all aspects after upgrading HarmonyOS4.2. Especially Huawei M

See all articles