2013-05-22 4 views
0

키가 눌러져있는 동안 C#에서 소리를 내고 싶습니다. 키를 놓으면 소리가 자동으로 멈 춥니 다.키가 눌리는 동안 소리 재생

var player = new System.Windows.Media.MediaPlayer(); 
    try 
    { 
     player.Open(new Uri(label46.Text)); 
     player.Volume = (double)trackBar4.Value/100; 
     player.Play(); 
    } 
    catch (FileNotFoundException) 
    { 
     MessageBox.Show("File has been moved." + "\n" + "Please relocate it now!"); 
    } 
+0

'player' 개체를 유지하고 키가 눌러져있을 때'.Play()'를 호출하는 것이 좋습니다. 그렇게하면 매번 파일을 열 필요가 없습니다. –

+0

그게 내가 소리 파일을 많이 사용한다는 것입니다. – Joscplan

+0

그래서 어떤 키를 누르거나 특정 키를 누르면? –

답변

0

http://msdn.microsoft.com/en-us/library/system.windows.input.keyboard.aspx

이 클래스는 이벤트 키보드의 상태가 변경 될 때, 당신은 이벤트에 가입 할 수 있고 누른 키는 키의 경우 다음 확인을 발사 :

내가 지금까지 무엇을 가지고 네가 원해.

예를 들어, KeyDown 이벤트에서 키가 "P"인지 아니면 무엇이든간에 파일 재생 여부를 확인하십시오. KeyUp 이벤트에서 키가 동일한 키인지 확인한 다음 파일 재생을 중지합니다.

private void OnKeyDownHandler(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Return) 
    { 
     textBlock1.Text = "You Entered: " + textBox1.Text; 
    } 
} 
1

당신은에서 KeyDown과의 keyup 이벤트를 통해이 문제를 처리 할 수 ​​

이 예제는 당신이 필요하지만, 당신이 시작 가야 정확히 무엇을하지 않습니다. 이를 위해 두 이벤트 모두 미디어 객체와 재생 상태를 알아야합니다. 내가 모르는 다른 가능성이있을 수 있습니다. 나는 연주와 녹음을 위해이 senerio를 사용했다. 당신은 오직 연주를 시도 할 수 있습니다.

둘째, 미디어가 종료되거나 실패한 후에도 키를 계속 누르면 재설정해야합니다. 따라서 이러한 이벤트를 등록하고 KeyUP 이벤트에서와 동일한 작업을 수행해야합니다.

아래 예제는 응용 프로그램 창의 KeyUP 및 KeyDown 이벤트를 보여줍니다.

MediaPlayer player = new System.Windows.Media.MediaPlayer(); 
bool playing = false; 

private void Window_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (playing == true) 
    { 
     return; 
    } 

    /* your code follows */ 
    try 
    { 
     player.Open(new Uri(label46.Text)); 
     player.Volume = (double)trackBar4.Value/100; 
     player.Play(); 
     playing = true; 
    } 
    catch (FileNotFoundException) 
    { 
     MessageBox.Show("File has been moved." + "\n" + "Please relocate it now!"); 
    } 
} 

private void Window_KeyUp(object sender, KeyEventArgs e) 
{ 
    if (playing == false) 
    { 
     return; 
    } 

    /* below code you need to copy to your Media Ended/Media Failed events */ 
    player.Stop(); 
    player.Close(); 
    playing = false; 
} 
+0

키 다운 이벤트가 의도 한대로 작동하지만 키 업이 작동하지 않습니다. 개인 무효 WIndow_KeyUp (개체 발신자, KeyEventArgs e) { if (playing == false) { return; (e.KeyCode == Keys.D1) player.Stop(); player.Close(); playing = false; } } – Joscplan