每次用户按下 F2 时,如何切换事件?
if(/*is pressed F2*/){
this.Close();
}
提前致谢!
一个简单的方法是使用MessageFilter
创建一个实现的类IMessageFilter
public class YourFilter : IMessageFilter
{
public event EventHandler F2Pressed = delegate { };
private const Int32 WM_KEYDOWN = 0x0100;
public bool PreFilterMessage(ref Message m)
{
if (m.Msg != WM_KEYDOWN)
return false;
if ((Keys)m.WParam==Keys.F2)
F2Pressed(this, new EventArgs());
return false;
}
}
并使用注册
var filter = new YourFilter();
Application.AddMessageFilter(filter);
filter.F2Pressed += YourEventHandlerHere;
首先创建一个按键事件,例如:
private void form1_KeyDown(object sender, KeyEventArgs e)
{
if ( e.KeyCode == Keys.F2 )
this.Close();
}
当您按下 form1 控件上的键时获取键:在 form1 的事件中将 form1 更改KeyPreview
为 truepage_load
private void form1_Load(object sender, EventArgs e)
{
this.KeyPreview = true;
}
现在,这将重点放在表单和其中的其他元素上(现在,如果您同意我的观点,请将其标记为答案):
public partial class preferences : Form {
public preferences() {
InitializeComponent();
this.KeyPreview = true;
}
private void preferences_KeyDown( object sender, KeyEventArgs e ) {
if (e.KeyCode == Keys.F2) {
this.Close();
}
}
}
我找到了最简单的方法来做到这一点:
private void preferences_KeyDown( object sender, KeyEventArgs e ) {
if (e.KeyCode == Keys.F2) {
this.Close();
}
}