Tag: keydown

Winform Datagridview处理选项卡和箭头键

我想处理DataGridView单元格上的KeyDown事件。 我使用以下代码获取单元格上的KeyDown事件: private void dgvData_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { var tb = (DataGridViewTextBoxEditingControl)e.Control; tb.KeyDown += cell_KeyDown; } 但看起来我无法处理像tab和箭头这样的特殊键。 这些键不会转到我的cell_KeyDown方法。 所以我尝试在DataGridView的KeyDown事件中处理它们: private void dgvData_KeyDown(object sender, KeyEventArgs e) { // handle keys } 在那种情况下,我仍然无法捕获Tab键。 我可以捕获箭头键,但是,在处理我的自定义事件后,它仍然会通过箭头转到其他单元格。 我想留在牢房里。 然后我像这样扩展DataGridView: class DataGridViewSp : DataGridView { protected override bool ProcessDialogKey(Keys keyData) { if (keyData == Keys.Tab) { //todo special handling return […]

基本的WinForm KeyDown事件处理

我正在使用WinForms。 我已经为主窗体的KeyDown事件创建了一个事件处理程序,从而调用了一个按钮的Click事件处理程序。 调用的Click事件处理程序取决于按下的特定键。 如果用户单击按钮而不是使用该键,然后随后尝试使用该键,则键(例如向下箭头)充当制表循环,在表单上的每个按钮控件之间更改焦点(而不是执行Keydown处理程序)。 有任何想法吗 ?

如何在KeyDown中确定按下了Shift + Tab

如何在KeyDown中确定按下了⇧ + Tab 。 private void DateTimePicker_BirthDate_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Tab && e.Modifiers == Keys.Shift) { //do stuff } } 因为永远不会在同一秒内完全按下两个键,所以无法工作。 你总是首先是Shift然后是另一个..

如何在C#中将“Keys”枚举值转换为“int”字符?

这似乎应该很容易,但我很难搞清楚这里需要发生什么。 在“KeyDown”事件处理程序中,如果“e.KeyValue”是一个数字,我想将其视为一个数字并将其存储为int。 所以,如果我在数字键盘上点击“8”,我不想要“Numpad8”我想要我可以加或减的int值8或者其他什么。 那么,我如何从KeyValue转换为int?

处理多个按键并检测键盘事件

我正在制作一个简单的游戏,我使用以下代码来检测光标键: protected override bool ProcessCmdKey(ref Message msg, Keys keyData) { if (Connection == null || Connection.IsOpen == false) return true; Thread.Sleep(SleepTime); switch (keyData) { case Keys.Up: GoForward(); return true; case Keys.Right: GoRight(); return true; case Keys.Left: GoLeft(); return true; case Keys.Down: GoBackward(); return true; case Keys.Space: Beep(); return true; } return base.ProcessCmdKey(ref msg, keyData); } […]

Concat KeyDown事件(Keys)到一个C#(wpf)字符串

我有一个磁卡读卡器,使用键盘输入发送数据。 我正在使用KeyDown事件获取此对象(C#WPF): KeyEventArgs e 我想拿出我得到的钥匙,然后把它们变成一根绳子。 我试图连接e.Key.ToString() ,但这不起作用。 我的输入有很多数字和符号(例如;?=等),而e.Key.ToString()的东西不起作用(它给了我一个数字的D3,而SHIFT或CTRL +另一个关键用于迹象)。 我只想要字符串,所以当我使用例如Console.WriteLine时,我会得到类似的东西 ;51895401051=000001341? 并不是 Oem1SHIFTD1CNTRLD2D3D2D1SHIFTD9OemQuestion …. 我尝试使用KeyConverter,但我无法弄清楚这一点。 有人可以帮帮我吗? 我当前的事件处理程序(无法正常工作)是: public static void keyPress(Object sender, KeyEventArgs e) { string keyCodeString = e.Key.ToString(); char? key = null; if (keyCodeString.Length == 1) { key = keyCodeString[0]; } else { if (keyCodeString.StartsWith(“NumPad”)) { key = keyCodeString[keyCodeString.Length – 1]; } else if […]

如何在WPF中将evenHandler设置为所有窗口(整个应用程序)?

如何将事件处理程序(如keydown )设置为整个解决方案,而不是单个窗口?

KeyDown事件未触发,KeyPreview设置为true

我正在构建一个小型Forms应用程序,我刚刚启动它。 但我有这个问题:如果我把一个控件放到窗体上,KeyDown事件不会触发。 我知道KeyPreview属性,并将其设置为true。 但这没有帮助… :(我也试图把焦点放在主要forms上,也没有成功。 有什么想法吗? 编辑: public partial class Form1 : Form { public Form1() { InitializeComponent(); KeyDown += new KeyEventHandler(Form1_KeyDown); this.KeyPreview = true; } void Form1_KeyDown(object sender, KeyEventArgs e) { switch (e.KeyCode) { case Keys.Left: MessageBox.Show(“Left”); break; case Keys.Right: MessageBox.Show(“Right”); break; } } }

C#:如何在文本框中按下输入触发按钮,但仍允许“Ctrl + A”等快捷方式通过?

很抱歉很长的标题,但我想不出另一种说法。 我有这个: private void textBoxToSubmit_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Enter) { buttonSubmit_Click((object)sender, (EventArgs)e); } } …为了在文本框中按下输入,触发“提交”按钮。 但是,这也可以防止快捷方式通过。 (不太确定它与它有什么关系,也许只有多键组合?) ShortcutsEnabled设置为true。 提前致谢!

C#读取文本框忽略字符

大家好,我有一个关键事件如下 if (e.KeyCode == Keys.C && e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return) { var amount = textBox1.Text; var total = label3.Text; decimal damount = Math.Round(Convert.ToDecimal(amount), 2); decimal dtotal = Convert.ToDecimal(total); var ntotal = dtotal – damount; var ndue = Math.Round(Convert.ToDecimal(ntotal), 2); var ntotal1 = Convert.ToString(ndue); if (ndue <= 0) { panel4.Show(); label4.Text = ntotal1; […]