如何从全屏模式中退出

时间:2014-10-20 15:29:15

标签: c# winforms visual-studio-2012 browser fullscreen

我想在全屏模式下显示我的程序(在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设置为" None",将WindowState设置为" Maximiazed"并且TopMost为" true"。网页浏览器也可以使用屏幕的全尺寸!

我的问题是:我想在按下按键或移动鼠标时关闭程序。我已经尝试了这个等等:

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

......但它没有奏效? : - (

2 个答案:

答案 0 :(得分:1)

试试这段代码。首先,实现接口IMessageFilter

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

接下来,实现所需的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);
    }

看看这是否适合你!

答案 1 :(得分:0)

这是一种预感,但尝试创建另一个对象(比如Button)作为webBrowser_animation的兄弟,并将焦点设置为Form_Load()的一部分。如果按ENTER键可以触发按钮的Click事件,那么您至少知道可以将焦点从Flash中移开。如果这样做,那么[a]使按钮"关闭屏幕"并且[b]将一个通用的键盘事件处理程序和鼠标事件处理程序添加到窗口关闭的窗体。这完全取决于键盘焦点。