2014-10-20 2 views
1

전체 화면 모드에서 내 프로그램을 winforms로 표시하려고합니다. 그리고 이것은 내가 그것을 얻을 방법 방법 : 양식의 속성에서전체 화면 모드에서 빠져 나오는 방법

private void Form1_Load(object sender, EventArgs e) 
{ 
    string id_string = System.IO.File.ReadAllText(@"C:\Users\astankic\ID.txt"); 
    int id_int = Convert.ToInt32(id_string); 
    string url = @"http://z0r.de/L/z0r-de_" + id_int + ".swf"; 
    TopLevel = true; 
    Cursor.Hide(); 
    webBrowser_animation.Url = new Uri(); 

, 나는 FormBorderStyle을 설정 한 "없음"을 WINDOWSTATE에 "Maximiazed"및 "true"로 최상위에. 웹 브라우저는 화면의 전체 크기도 차지합니다!

내 문제는 : 키를 누르거나 마우스를 움직일 때 프로그램을 닫고 싶습니다. 나는 이미 이것 등으로 시험해 보았다 :

private void Form_Screensaver_KeyDown(object sender, KeyEventArgs e) 
{ 
    Close(); 
} 

...하지만 효과가 없었습니까? :-(

+0

ALT + F4를 사용해 보셨습니까? –

+1

그런데 키보드 포커스가있는 WebBrowser 컨트롤에 플래시 파일 (SWF)을로드한다는 것이 문제가 아닌지 의심 스럽습니다. 키보드 포커스를 응용 프로그램으로 다시 가져 오는 방법이 필요합니다. 귀하의 함수'Form_Screensaver_KeyDown'이 전혀 실행되지 않는다고 가정 할 수 있습니까? –

+0

@ChrisWalsh 네, 가지고 있습니다. 작동하지만, 키를 누르거나 마우스를 움직일 때 떠나려고합니다. – user3347346

답변

1

이 코드를 시도 첫째, 인터페이스 IMessageFilter 구현합니다..

을 0

다음으로 요구 PreFilterMessage 메소드를 구현 : 폼이 닫힐 때

public partial class Form1 : Form, IMessageFilter 
{ 
    ... 

    public bool PreFilterMessage(ref Message m) 
    { 
     // If key is pressed or mouse is moved 
     if (m.Msg == 0x0100 || m.Msg == 0x0200) 
     { 
      Application.RemoveMessageFilter(this); 
      Application.Exit(); 
      return true; 
     } 

     return false; 
    } 
} 

다음 폼의 생성자에 필터를 추가하고 제거 :이 당신을 위해 작동하는 경우

public Form1() 
    { 
     InitializeComponent(); 

     Application.AddMessageFilter(this); 
     FormClosed += Form1_FormClosed; 
    } 

    private void Form1_FormClosed(object sender, FormClosedEventArgs e) 
    { 
     Application.RemoveMessageFilter(this); 
    } 

하세요!

+0

나는 그것을 시도했지만, 프로그램은 즉시 자동으로 닫힌 후 시작과 끝이있다. 마우스와 키가 움직이거나 눌리지 않았습니다! – user3347346

+0

@ user3347346 - 대신'if (m.Msg == 0x0100)'을 사용해보십시오. 이렇게하면 키 누르기 만 감지되고 마우스는 움직이지 않습니다. – Icemanind

+0

예 작품 (keypress) !!! 그리고 마우스 만 움직이면 어떻게 닫을 수 있습니까? – user3347346

0

이 직감은 webBrowser_animation의 형제와 같은 다른 객체 (말하는 Button)를 만드는 시도하고 Form_Load()의 일환으로 해당 개체에 포커스를 설정하지만입니다. Enter 키를 누르면 다음 버튼의 Click 이벤트를 해고 할 수있는 경우 Flash에서 포커스를 벗어날 수 있다는 것을 적어도 알고 있습니다.이 경우 [a] 버튼을 "화면에서 떼"하고 [b] 일반 키보드 이벤트 핸들러 및 마우스 이벤트 핸들러를 폼에 추가합니다. . 창 닫기 그것은 모든 키보드 초점에 관하여