ユーザーが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のイベントKeyPreview
でform1をtrueに変更しますpage_load
private void form1_Load(object sender, EventArgs e)
{
this.KeyPreview = true;
}
私はこれを行う最も簡単な方法を見つけました:
private void preferences_KeyDown( object sender, KeyEventArgs e ) {
if (e.KeyCode == Keys.F2) {
this.Close();
}
}
現在、これはフォームとその中の他の要素の両方に焦点を当てて機能しています(今、私に同意する場合は、回答としてマークしてください):
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();
}
}
}