1

我正在使用 windowsForm 应用程序在 C# 中开发具有最少 UI 的 mp3 播放器。

目前我有打开播放和暂停歌曲的方法。

因为我希望 UI 最小化,所以我只显示正在播放的歌曲的文件名。

现在的问题是当我尝试为每个方法分配一个 KeyDown 事件时。

在我的表单中,我可以选择 KeyPress Event 并将其映射到 Empty 表单,但它只能保存 1 个 KeyDown 事件,这意味着我现在只能运行 1 个方法。

我该如何解决这个问题?

我假设我可以使用 KeyPress 和 KeyUp 事件来运行我的其他 2 种方法,但我想有一个更聪明的解决方案吗?

我的代码的一部分:在这个例子中,OpenFile 工作......但 Play 不能同时工作,因为我没有为它分配任何 EventHandler,我猜。但是因为我不想要 UI 中的任何按钮。,我该怎么办?

我也不想要传统的快捷命令。像 ctrl + 键。

private void o(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.O)
            {
                openFileDialog1.ShowDialog();
            }
        }

        private void p(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.P)
            {
                player.Play();
            }
        }
4

2 回答 2

4

简单地

private void o(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.O)
        {
            openFileDialog1.ShowDialog();
        }

        else if (e.KeyCode == Keys.P)
        {
            player.Play();
        }
    }

您可能只想定义一个事件处理程序,但您可以检查是否按下了多个键。

于 2013-08-19T19:41:58.750 回答
2

我个人将其放入案例语句和单个方法/函数中。这样您就可以在没有 if/then 网络的情况下进行扩展。

private void o(object sender, KeyEventArgs e) {
switch (e.KeyCode) {
    case Keys.O: 
        openFileDialog1.ShowDialog();
        break;
    case Keys.P:
        player.Play();
        break;
    default: 
        break;
  }
}
于 2013-08-19T19:46:50.087 回答