我有一个模态表单,我想在用户点击它时关闭它(表单试图模仿组合框下拉区域的行为)。
我可以这样:
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);
}
我的问题是同时播放声音,我想停止播放。
答案 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);
}