模拟IR遥控器的音量按钮

时间:2020-03-28 06:10:04

标签: vb.net winforms button timer

我已经编写了一个小型媒体播放器应用程序,效果很好。
我什至已经管理了一个屏幕上的遥控器(显然只是一个带有按钮的窗体,看起来像一个虚拟遥控器),是的,我还集成了一个Arduino以能够使用真正的遥控器,但是忘记了Arduino遥控器暂时的控制我的问题是关于我要构建的虚拟遥控器。

对按钮进行编程非常基础:这是我们在Vb.net中学习的第一件事,但这只是在单击场景中。
如果我看一个真正的电视遥控器,则可以单击(最常使用音量按钮)调高或调低音量,而响应是调高或调低音量一个单位,或者可以按住相同的按钮它会重复执行几次向上或向下更改单位的过程,具体取决于我再次释放按钮的时间。

我将如何实现?

我曾尝试使用谷歌搜索,但搜索结果返回的所有内容都涉及一个物理鼠标按钮,该按钮与我需要的按钮控件相对应。

1 个答案:

答案 0 :(得分:1)

一个提供上/下旋转按钮功能的UserControl示例。
它使用两个标准按钮,一个标签和一个计时器。

要进行设置,请将新的UserControl添加到项目中:

  • 将其BackColor设置为Color.Transparent
  • 添加两个按钮,同时选择两个按钮,并将事件处理程序添加到MouseDown,MouseUp,KeyDown和KeyUp事件(同时选择这两个按钮,您将添加4个方法)
  • 两个Unicode字符(U+25B2U+25BC)用于显示箭头。根据需要设置按钮的字体大小和颜色(示例UC使用Segoe UI作为字体)。
    • 将上部按钮固定到左/上/右
    • 将下部按钮固定到左/下/右
    • 将标签固定到左/右
  • 在UC构造函数中创建一个计时器,其Interval值设置为300。该值表示按住鼠标按钮或键盘键时增量的初始速度。每当计时器计时时,它都会递减,直到达到由UC的 Speed 公共属性(内部限制为(1:10)范围)定义的阈值。
  • 最大和最小增量由UC的 Min Max 公共属性
  • 定义
  • Value 公共属性获取或设置当前增量。

按下鼠标按钮或键盘键时计时器启动,释放时停止计时器。引发 Timer.Tick 事件时, Timer.Interval 会减少25ms直到最大 Speed 值。由于初始值设置为 300ms ,最大值Speed限于 10 ,因此最小间隔值为{{ 1}},接近于50ms 官方决议。
如果更改了这些值,则需要考虑最小间隔,以避免重叠的System.Windows.Form.Timer事件。

它是这样工作的:

SpinButtons UserControl


Tick