2014-08-28 63 views
0

大家好,我知道默认标签和图片框不能具有焦点,我设计的窗体键按下的方法将这些控件关于使用箭头按钮动态视频播放器不会释放焦点

当我做一个动态视频播放器控制,我可以不再移动这些控件也没有形式似乎获得焦点了

我已经尝试过this.Focus后使视频播放器,有什么人可以想到的,也许可以继续专注于永久形式

如果示例代码是需要我会复制,但代码本身似乎是fi NE视频播放器只是不断的焦点

表1的keydown

 if (SenderS == "Label") 
     { 
      // Label b = sender as Label; 
      Label b = (Label)Controls[ControlID]; 
      int x = b.Location.X; 
      int y = b.Location.Y; 

      if (e.KeyCode == Keys.Right) x += 1; 
      else if (e.KeyCode == Keys.Left) x -= 1; 
      else if (e.KeyCode == Keys.Up) y -= 1; 
      else if (e.KeyCode == Keys.Down) y += 1; 

      b.Location = new Point(x, y); 
     } 

标签鼠标按下

 SenderS = "Label"; 
     Label b=sender as Label; 

     ControlID = b.Name; 

此代码工作正常,但是当视频被添加到形式,我可以不再使用它 我假设,因为表单不再接受keydown事件

+0

和你在做什么的代码是....... ?? – terrybozzio 2014-08-28 16:10:35

+0

@terrybozzio我添加了我在做什么的示例代码 – user3027738 2014-08-28 16:43:15

回答

0

作为通用目的,您首先需要重写IsInputKey方法:

 private void YourControl_KeyDown(object sender, KeyEventArgs e) 
     { 
      //your logic here 
     } 

     protected override bool IsInputKey(System.Windows.Forms.Keys keyData) 
     { 
      switch (keyData) 
      { 
       case Keys.Right: 
       case Keys.Left: 
       case Keys.Up: 
       case Keys.Down: 
        return true; 
      } 
      return base.IsInputKey(keyData); 
     } 

或重写ProcessCmdKey方法。

+0

这解决了我的问题,我将其标记为正确的,虽然我不明白为什么介意解释它的作用? – user3027738 2014-08-28 17:02:53

+0

它的说法是将这些键作为输入,因为在实现中,这些键从keydown事件中排除(非常基本的说法)。 – terrybozzio 2014-08-28 17:07:00

+0

感谢您的帮助和我每天都会学到新知识的信息^^ – user3027738 2014-08-28 17:16:19