在form.show()之后执行代码?

时间:2011-12-14 12:09:32

标签: c# winforms visual-studio-2010

无论如何在Form.Show()之后执行代码?我正在做的是一个小菜单,在用户点击鼠标右键单击后弹出,如果我使用Form.ShowDialog()我无法点击该菜单上的任何地方,如果我点击菜单上的任何地方应该是菜单应该消失,只能在Form.Show()上发生。

Form.Show()之后我向数据库添加信息,这就是Form.Show()是唯一适合我情况的原因。

代码:

if (e.Button == MouseButtons.Right)
{
    if (Application.OpenForms["frm_Options"] == null)
    {
        frm_Options ofrm = new frm_Options();
        ofrm.StartPosition = FormStartPosition.Manual;
        ofrm.SetBounds(MousePosition.X + 5, MousePosition.Y + 5, ofrm.Width, ofrm.Height);
        ofrm.ShowDialog();
        }
    }
}

另一种形式:

{
    TreeNode oTreeNode = new TreeNode("New Node");
    frm_Test ofrm = (frm_Test)Application.OpenForms["frm_Test"];
    //updateTreeView is custom event created on ther main form
    ofrm.updateTreeView(false, false, oTreeNode); 
    this.Close();
}

2 个答案:

答案 0 :(得分:1)

考虑到您正在谈论ContextMenu,意味着只有一个表单可以在单个时刻出现。这意味着如果您可以使用Show()非阻止呼叫。如果用户单击表单外的任何位置,您可以关闭它,如果它之前已经打开过。如果用户单击表单或其上的任何控件(如果有的话),您可以引发一个事件(主窗口接收的ContextMenuFormControlClicked种类并执行必要的操作(在您的情况下是DB访问)。

希望这有帮助。

答案 1 :(得分:0)

您可以在调用form.show来完成工作之前启动一个线程