我正在开发一个Windows窗体应用程序,其中我有一些文本框值和两个按钮,一个是保存,另一个是编辑。用于在点击上保存记录的按钮代码工作正常。但现在我想通过按CTRL + S进行保存和 CTRL + E进行编辑,将键盘快捷键键添加到SAVE和EDIT记录中。请帮我解决一下这个。我是这个编程领域的新手,所以请精确和非常清楚在程序中编写我的代码。
由于
答案 0 :(得分:1)
首先,您应该将Form.KeyPreview
的{{1}}属性设置为Form
。
导致true
属性(as MSDN says):
获取或设置一个值,该值指示表单是否将接收密钥 将事件传递给具有焦点的控件之前的事件。
然后有必要为Form.KeyPreview
的{{1}}事件创建事件处理程序:
KeyDown
答案 1 :(得分:0)
在表单中添加- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
if(IS_IPHONE_6P)
{
return CGSizeMake(([UIScreen mainScreen].bounds.size.width - 70) / 2, ([UIScreen mainScreen].bounds.size.width - 70) / 2);
}
else
{
return CGSizeMake(([UIScreen mainScreen].bounds.size.width - 60) / 2, ([UIScreen mainScreen].bounds.size.width - 60) / 2);
}
}
。添加两个MenuStrip
保存并编辑,将它们附加到您的EventHandler按钮点击。将所需的值(Ctrl + S,Ctrl + E)分配给ToolStripMenuItem
属性。
如果您的应用程序不需要主菜单,则可以隐藏它(ShortcutKeys
= false)。
答案 2 :(得分:0)
您也可以尝试覆盖表单的ProcessDialogKey()。
protected override bool ProcessDialogKey(Keys keyData)
{
Keys key = keyData & Keys.KeyCode;
bool contrloIsPressed = (keyData & Keys.Control) == Keys.Control ? true : false;
switch (key)
{
case Keys.S:
if (contrloIsPressed)
Save();
break;
case Keys.E:
if (contrloIsPressed)
Edit();
break;
}
return base.ProcessDialogKey(keyData);
}
答案 3 :(得分:0)
可能是为了帮助你。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
const int WM_KEYDOWN = 0x100;
const int WM_SYSKEYDOWN = 0x104;
if ((msg.Msg == WM_KEYDOWN) || (msg.Msg == WM_SYSKEYDOWN))
{
switch (keyData)
{
case Keys.Q | Keys.Control:
Close();
return false;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
答案 4 :(得分:-1)
protected override bool ProcessCmdKey(ref Message message, Keys keys)
{
switch (keys)
{
case Keys.A | Keys.Control:
// ... Process Shift+Ctrl+Alt+B ...
adding = true;
updating = false;
EnableText();
ClearText();
AutoNo();
return true; // signal that we've processed this key
case Keys.S | Keys.Control:
// ... Process Shift+Ctrl+Alt+B ...
SaveUpdate();
return true; // signal that we've processed this key
case Keys.E | Keys.Control:
// ... Process Shift+Ctrl+Alt+B ...
updating = true;
adding = false;
EnableText();
return true; // signal that we've processed this key
case Keys.D | Keys.Control:
// ... Process Shift+Ctrl+Alt+B ...
DeleteRecord();
return true; // signal that we've processed this key
}
// run base implementation
return base.ProcessCmdKey(ref message, keys);
}