Выполнить код после form.show ()? - PullRequest
0 голосов
/ 14 декабря 2011

Есть ли способ выполнить код после 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 ]

1 голос
/ 14 декабря 2011

Учитывая, что вы говорите о ContextMenu, означает, что только одна форма может появиться в один момент. Это означает, что если вы можете использовать Show() неблокирующий вызов. Если пользователь щелкнет где-нибудь за пределами формы, вы можете закрыть его, если он уже был открыт ранее. Если пользователь щелкает форму или какой-либо элемент управления (если он есть), вы можете вызвать событие (например, ContextMenuFormControlClicked, когда основное окно получает и выполняет необходимое действие (в вашем случае доступ к БД).

Надеюсь, это поможет.

0 голосов
/ 14 декабря 2011

Вы можете создать тему перед вызовом form.show, чтобы выполнить свою работу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...