Hello,
I’m building a designer-style app in Wisej, and I want to override the browser defaults for Ctrl+S and Ctrl+P (so they don’t trigger “Save page” or “Print”) and also make Ctrl+X / Ctrl+V work reliably inside my grid.
For example, in my app I want:
Ctrl+S → call SaveDraft()
Ctrl+P → call Publish()
Ctrl+N → new mask
F5 → refresh preview
Ctrl+C / Ctrl+X / Ctrl+V / Delete / Insert / Ctrl+D → manipulate rows in my DataGridView (_gridFelder
).
I tried two approaches:
Overriding ProcessCmdKey:
protected override bool ProcessCmdKey(Keys keyData)
{
if (keyData == (Keys.Control | Keys.S)) { SaveDraft(); return true; }
if (keyData == (Keys.Control | Keys.P)) { Publish(); return true; }
if (_gridFelder?.Focused == true)
{
if (keyData == (Keys.Control | Keys.C)) { CopyRow(); return true; }
if (keyData == (Keys.Control | Keys.X)) { CutRow(); return true; }
if (keyData == (Keys.Control | Keys.V)) { PasteRow(); return true; }
if (keyData == Keys.Delete) { DeleteRow(); return true; }
if (keyData == Keys.Insert) { AddRowBelow(); return true; }
}
return base.ProcessCmdKey(keyData);
}
private void Designer_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.S) { SaveDraft(); e.Handled = true; }
else if (e.Control && e.KeyCode == Keys.P) { Publish(); e.Handled = true; }
else if (e.KeyCode == Keys.F5) { RefreshPreview(); e.Handled = true; }
else if (e.Control && e.KeyCode == Keys.N) { NewMask(); e.Handled = true; }
else if (e.Control && e.KeyCode == Keys.C && _gridFelder.Focused) { CopyRow(); e.Handled = true; }
else if (e.Control && e.KeyCode == Keys.X && _gridFelder.Focused) { CutRow(); e.Handled = true; }
else if (e.Control && e.KeyCode == Keys.V && _gridFelder.Focused) { PasteRow(); e.Handled = true; }
else if (e.KeyCode == Keys.Delete && _gridFelder.Focused) { DeleteRow(); e.Handled = true; }
else if (e.KeyCode == Keys.Insert && _gridFelder.Focused) { AddRowBelow(); e.Handled = true; }
else if (e.Control && e.KeyCode == Keys.D && _gridFelder.Focused) { DuplicateRow(); e.Handled = true; }
}
Problem:
Browser still intercepts Ctrl+S and Ctrl+P (save/print dialog).
Ctrl+X and Ctrl+V don’t trigger at all.
? What’s the correct way in Wisej to fully disable browser default shortcuts and route them to app logic (especially in a DataGridView)?
Thanks in advance!
Hi Rene,
my initial answer was wrong or not entirely correct.
Some shortcuts can be overridden with Accelerators.
Please find attached a sample for CTRL+S that seems to be working in Chrome, Firefox, IE and Edge.
But you might test around a bit to see if your shortcut works in your target browsers.
Best regards
Frank
Hi Rene,
short answer: You can’t. It’s up to the browser to handle these shortcuts before they even reach the web application.
So only way is to search for browser setup options.
Best regards
Frank
Please login first to submit.