2013-08-19 148 views
1

我正在使用windowsForm應用程序在C#中使用最小UI的MP3播放器。C#UI多重KeyDown事件窗體窗體應用程序

目前我有打開播放和暫停歌曲的方法。

因爲我想最小化UI,所以我只顯示播放歌曲的fileName。

現在的問題是,當我試圖爲每個方法分配一個KeyDown事件。

正如在我的形式,我可以選擇和映射按鍵事件到是空的形式,但它只能容納1個KeyDown事件,現在意味着我只能得到1種方法來運行..

如何我能解決這個問題嗎?

我假設我可以使用KeyPress和KeyUp事件來運行其他2種方法,但我想這是更聰明的解決方案嗎?

我的代碼的一部分:在這個例子中,OpenFile的工作原理...但播放不同時工作,因爲我沒有爲它分配任何EventHandler,我猜。但因爲我不想在UI中有任何按鈕,所以我能做些什麼?

我不想要傳統的快捷命令。像ctrl +鍵。

private void o(object sender, KeyEventArgs e) 
     { 
      if (e.KeyCode == Keys.O) 
      { 
       openFileDialog1.ShowDialog(); 
      } 
     } 

     private void p(object sender, KeyEventArgs e) 
     { 
      if (e.KeyCode == Keys.P) 
      { 
       player.Play(); 
      } 
     } 

回答

4

只需

private void o(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.O) 
     { 
      openFileDialog1.ShowDialog(); 
     } 

     else if (e.KeyCode == Keys.P) 
     { 
      player.Play(); 
     } 
    } 

您可能希望只定義一個事件處理程序,但你可以檢查按下幾個按鍵。

+0

ohh我是多麼愚蠢!謝謝 !!^_^ –

+0

我會..它說我必須再等8分鐘,先.. –

2

我會親自把它放入一個case語句和一個單一的方法/函數。這樣,您可以在沒有if/thens網頁的情況下進行擴展。

private void o(object sender, KeyEventArgs e) { 
switch (e.KeyCode) { 
    case Keys.O: 
     openFileDialog1.ShowDialog(); 
     break; 
    case Keys.P: 
     player.Play(); 
     break; 
    default: 
     break; 
    } 
} 
相關問題