C# 我希望只能使用Alt+;F4在表单应用程序的WebBrowser中禁用快捷键时
如下面的代码所示,当WebBrowser被放置在子窗口中并且焦点在子窗口中的WebBrowser上时,我只想用Alt+F4关闭子窗口,但不知何故父窗体也被关闭。 为什么会发生这种情况C# 我希望只能使用Alt+;F4在表单应用程序的WebBrowser中禁用快捷键时,c#,.net,winforms,C#,.net,Winforms,如下面的代码所示,当WebBrowser被放置在子窗口中并且焦点在子窗口中的WebBrowser上时,我只想用Alt+F4关闭子窗口,但不知何故父窗体也被关闭。 为什么会发生这种情况 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; us
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApp6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Shown(object sender, EventArgs e)
{
var f2 = new Form2();
f2.Show();
}
}
public class Form2 : Form
{
public Form2()
{
var webBrowser1 = new WebBrowser();
webBrowser1.Dock = DockStyle.Fill;
webBrowser1.WebBrowserShortcutsEnabled = false;
Controls.Add(webBrowser1);
webBrowser1.PreviewKeyDown += (sender, e) =>
{
if (e.Alt && e.KeyCode == Keys.F4)
Close();
};
webBrowser1.DocumentText = "test";
}
}
}
您可以在不调用
Close
的情况下将按键标记为input key,然后它将关闭当前窗口:
webBrowser1.PreviewKeyDown += (sender, e) =>
{
if (e.Alt && e.KeyCode == Keys.F4)
{
e.IsInputKey = true;
}
};
您可以简单地删除该代码。如果在不抑制按键的情况下调用
Close()
,它将冒泡到之后激活的窗体ALT+F4
已经自动关闭了当前窗口。@ssa2不要错过Jimi关于根本原因的解释。是的,先生。另外,我把“&&”拼错为“&”。