Как сделать «всплывающее» (подсказка, выпадающее, всплывающее) окно в Winforms?

Как я могу сделать, как я назову, «всплывающее окно» в WinForms?

Так как я использовал свое собственное выдуманное слово"выскакивать"Позвольте мне привести примеры этого так называемого «всплывающего» окна:

a окно всплывающей подсказки (может выходить за пределы родительской формы, не отображается на панели задач, не является модальным и не захватывает фокус):

a всплывающее меню окно (может выходить за пределы родительской формы, не отображается на панели задач, не является модальным и не захватывает фокус):

a падать окно (может выходить за пределы родительской формы, не отображается на панели задач, не является модальным и не захватывает фокус):

A главное меню окно (может выходить за пределы родительской формы, не отображается на панели задач, не является модальным и не захватывает фокус):

Обновить A выскакивать окно не делает себя«активное» окно при взаимодействии с использованием мыши или клавиатуры (окно «владелец» остается активным окном):

Атрибуты, которые я ищу в этом мифическом «всплывающем окне», таковы:

Можнопростираться вне границ его родительской формы (т.е.это не дочернее окно)не появляется вПанель задач (т.е. эвристика окна, из которого должны появиться окна, не срабатывает, и при этом у нее нет расширенного стиля окна WS_EX_APPWINDOW)не являетсямодальный (Т.е.не отключает своего "владельца")не воруетфокусявляется всегданаверху из его "владельца"не становится "активным" окном при взаимодействии с (владелец остается активным)

Приложения Windows уже умеют создавать такие окна. Как я могу сделать это в приложении WinForms?

Смежные вопросыКак мне добиться всего вышеперечисленного в нативном коде?Как мне создать всплывающее окно в Delphi?у меня есть этот собственный код, чтобы показать «всплывающее» окно - какие P / вызывает требуются для выполнения тех же действий в .NET?У меня есть набор P / Invoke в .NET - могу ли я использовать обычную WinForm, переопределяя определенные методы, чтобы добиться того же эффекта?У меня есть WinForm, который я показываю как «всплывающее окно» путем переопределения определенных методов - есть ли встроенныйControl что может выступить в качестве всплывающего окна для меня?Как смоделировать выпадающее окно в WinForms?Попытка # 1

я попробовалShow(onwer) + ShowWithoutActivation метод:

PopupForm dd = new PopupForm ();
dd.Show(this);

с PopupForm:

public class PopupForm: Form
{
    public PopupForm()
    {
        InitilizeComponent();
    }

    private void InitilizeComponent()
    {
        this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
        this.WindowState = FormWindowState.Normal;
        this.ShowInTaskbar = false;
    }

    protected override bool ShowWithoutActivation
    { get { return true; } }
}

Очень почти решил проблему, но потом яобнаруженный напомнили еще одно свойство «всплывающих» окон: они несфокусироваться на их форме "владельца" стать активным при взаимодействии с мышью или клавиатурой.

Ответы на вопрос(3)

Ваш ответ на вопрос