【问题标题】:C# Form Popup Menu BehaviourC# 表单弹出菜单行为
【发布时间】:2013-12-06 05:29:51
【问题描述】:

奇怪的是,我似乎找不到这个问题的答案。

使用普通的ContextMenuStrip,当用户右键单击弹出菜单时。如果菜单已经打开,它将在新的鼠标位置打开。

我希望使用表单来实现同样的行为。

如果我使用Form.Show(),表单会打开,但是当用户右键单击并且表单已经打开时,它会关闭,并且需要用户右键单击两次。

如果我使用Form.ShowDialog(),表单在失去焦点时不会关闭。

那么,如何在右键单击时显示表单,然后如果用户再次右键单击,关闭第一个表单并在新位置再次打开它?

【问题讨论】:

    标签: c# forms focus popupwindow


    【解决方案1】:

    假设您有一个主窗体和一个弹出窗体,您必须处理一些事件。此弹出表单应将Owner 设置为主表单:

    PopupForm popup = new PopupForm();
    popup.Owner = mainForm;//or this if the code is placed in the MainForm class
    //MouseUp event handler for your mainForm
    private void mainForm_MouseUp(object sender, MouseEventArgs e){
      if(e.Button == MouseButtons.Right){
        popup.Location = PointToScreen(e.Location);
        if(!popup.Visible) popup.Visible = true;
      } else if(popup.Visible) {
        popup.Hide();//Don't close, just hide, otherwise you have to handle more...
      }
    }
    

    【讨论】:

    • 谢谢,但是如果我需要关闭表单,我应该怎么处理?
    • @Simon 你的意思是关闭主窗体还是弹出窗体?
    • 关闭弹出表单:)
    猜你喜欢
    • 2011-06-13
    • 2016-04-15
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 2012-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多