我在文本框的 keydown事件写了D的按键但是按键的时候蹦出无数个D  - -怎么回事u [DllImport("user32.dll", EntryPoint = "keybd_event")]
          public static extern void keybd_event(byte bVk, byte bScan,int dwFlags, int dwExtraInfo );          private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
          {
              keybd_event((byte)Keys.D, 0, 0, 0); //按下D              keybd_event((byte)Keys.D, 0, 2, 0); //释放D           } 

解决方案 »

  1.   

    [DllImport("user32.dll", EntryPoint = "keybd_event")]
      public static extern void keybd_event(byte bVk, byte bScan,int dwFlags, int dwExtraInfo );  private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
      {
      keybd_event((byte)Keys.D, 0, 0, 0); //按下D  keybd_event((byte)Keys.D, 0, 2, 0); //释放D    } 
      

  2.   

    keydown触发了模拟按键,按键又触发了keydown。private void richTextBox1_KeyDown(object sender, KeyEventArgs e)
      {   if (e.KeyCode != 'd')
       {
      keybd_event((byte)Keys.D, 0, 0, 0); //按下D  keybd_event((byte)Keys.D, 0, 2, 0); //释放D 
      }   } 
    大概的思路,你修改下。
      

  3.   

    代码我已经修正了 如下using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.Runtime.InteropServices;namespace C按键
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            [DllImport("user32.dll", EntryPoint = "keybd_event")]
            public static extern void keybd_event(byte bVk, byte bScan, int dwFlags, int dwExtraInfo);
            private void richTextBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (e.KeyChar.ToString()!= "d")
                {
                    e.Handled = true;
                    keybd_event((byte)Keys.D, 0, 0, 0); //按下D
                }
            }
        }
    }