如何退出全屏模式

本文关键字:模式 退出 何退出 | 更新日期: 2023-09-27 18:27:21

我想在全屏模式下显示我的程序(在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设置为"最大化",将TopMost设置为"true"。网络浏览器也占据了整个屏幕的大小!

我的问题是:当按键或鼠标移动时,我想关闭程序。我已经用这个等试过了:

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

但没用?:-(

如何退出全屏模式

试试这个代码。首先,实现接口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);
    }

看看这是否适合你!

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