C# WinForm的TextBox中只允许用户输入数字、英文字母,如何允许Crtl+V。

 1         #region 验证用户输入的是否为英文,数字
 2         //判断用户是否使用了Crtl+V
 3         private bool isCrtlV = false;
 4         /// <summary>
 5         /// 判断用户输入的是否为英文字符、数字
 6         /// </summary>
 7         /// <param name="sender"></param>
 8         /// <param name="e"></param>
 9         private void txtKeyName_KeyPress(object sender, KeyPressEventArgs e)
10         {
11             if (!Char.IsNumber(e.KeyChar) && !Char.IsUpper(e.KeyChar) && !Char.IsLower(e.KeyChar) && e.KeyChar != (Char)8 && !isCrtlV)
12             {
13                 e.Handled = true;//输入的是数字
14             }
15             else
16             {
17                 isCrtlV = false;
18             }
19         }
20         #endregion
21 
22         #region 判断用户输入的是否为组合按键
23         /// <summary>
24         /// 判断用户输入的是否为组合按键txtKeyName_KeyPress事件中捕获不到组合按键
25         /// </summary>
26         /// <param name="sender"></param>
27         /// <param name="e"></param>
28         private void txtKeyName_KeyDown(object sender, KeyEventArgs e)
29         {
30             if (e.KeyData == (Keys.Control | Keys.V))
31             {
32                 isCrtlV = true;
33             }
34         }
35         #endregion

 

下面是一下按键的参考:

  e.KeyCode == Keys.Back || e.KeyCode == Keys.Delete   // back space , delete

  e.KeyCode == Keys.Left || e.KeyCode == Keys.Right  // left , right

  (e.Control && e.KeyCode == Keys.C)    // copy

  (e.Control && e.KeyCode == Keys.V)    // paste

  (e.Control && e.KeyCode == Keys.X)    // cut

  (e.Shift && e.KeyCode == Keys.Home)

  (e.Shift && e.KeyCode == Keys.End)

 

posted @ 2017-07-18 14:53  风中寻觅  阅读(2811)  评论(0)    收藏  举报