在WinForms中单击鼠标外部模式时停止声音

时间:2015-03-16 09:19:19

标签: c# winforms

我有一个模态表单,我想在用户点击它时关闭它(表单试图模仿组合框下拉区域的行为)。

我可以这样:

protected override void WndProc(ref Message m)
{
    if (m.Msg == 0x86 && (int) m.WParam == 0)
        if (DialogResult == DialogResult.None)
            DialogResult = DialogResult.OK;
    base.WndProc(ref m);
}

我的问题是同时播放声音,我想停止播放。

1 个答案:

答案 0 :(得分:1)

你正在使用错误的工具来完成工作。您需要模仿下拉控件。那为什么不使用ToolStripDropDown

如果您不了解它,请点击此处。您可以使用ToolStripDropDown创建ToolStripControlHost并在其中显示任何自定义控件。

当用户在其外部点击时,它会自动关闭。您也可以通过拨打ToolStripDropDown.Close

手动关闭它

一个小例子看起来像这样。

private void button1_Click(object sender, EventArgs e)
{
    ToolStripDropDown dropDown = new ToolStripDropDown();

    ListBox listBox = new ListBox();
    for (int i = 0; i < 10; i++)
    {
        listBox.Items.Add("Item " + i);
    }

    listBox.SelectedIndexChanged += (o, args) => dropDown.Close();

    dropDown.Items.Add(new ToolStripControlHost(listBox));

    dropDown.Show(MousePosition);
}