在C#中为按钮设置键值

时间:2013-06-22 12:50:11

标签: c#

我想这样做。  有4个按钮,就像我的表单中的箭头键。当我按下左边的按钮时,我想按真实左箭头键做。就像我想要所有4个按钮一样。 我搜索并获得了KeyEven函数, 我是自学。任何帮助将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

来自MSDN文章:

  

某些控件通常会忽略某些按键,例如TAB,RETURN,ESC和箭头键,因为它们不被视为输入键按下。例如,默认情况下,Button控件忽略箭头键。按箭头键通常会使焦点移动到上一个或下一个控件。箭头键被认为是导航键,按下这些键通常不会引发Button的KeyDown事件。但是,按下Button的箭头键会引发PreviewKeyDown事件。通过处理Button的PreviewKeyDown事件并将IsInputKey属性设置为true,可以在按下箭头键时引发KeyDown事件。但是,如果您处理箭头键,焦点将不再移动到上一个或下一个控件。

我引用了我在那里找到的代码。我还没有测试过它

public Form1()
{
  InitializeComponent();

  // Form that has a button on it
  button1.PreviewKeyDown +=new PreviewKeyDownEventHandler(button1_PreviewKeyDown);
  button1.KeyDown += new KeyEventHandler(button1_KeyDown);
  button1.ContextMenuStrip = new ContextMenuStrip();
  // Add items to ContextMenuStrip
  button1.ContextMenuStrip.Items.Add("One");
  button1.ContextMenuStrip.Items.Add("Two");
  button1.ContextMenuStrip.Items.Add("Three");
}

// By default, KeyDown does not fire for the ARROW keys 
void button1_KeyDown(object sender, KeyEventArgs e)
{
  switch (e.KeyCode)
  {
    case Keys.Down:
    case Keys.Up:
        if (button1.ContextMenuStrip != null)
        {
            button1.ContextMenuStrip.Show(button1,
                new Point(0, button1.Height), ToolStripDropDownDirection.BelowRight);
        }
        break;
  }
}

// PreviewKeyDown is where you preview the key. 
// Do not put any logic here, instead use the 
// KeyDown event after setting IsInputKey to true. 
private void button1_PreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
{
  switch (e.KeyCode)
  {
    case Keys.Down:
    case Keys.Up:
        e.IsInputKey = true;
        break;
 }
}

以下是链接http://msdn.microsoft.com/en-us/library/system.windows.forms.control.previewkeydown.aspx

希望这对你有所帮助,祝你好运。