2012-04-03 1 views
3

Я создаю приложение, которое будет иметь интерфейс, похожий на Photoshop: несколько отдельных форм все помогают редактировать объект. Итак, у меня будет несколько форм, один из которых является «основным» (предоставляет меню файлов, меню настроек, и т. Д.), А у других есть элементы управления, которые редактируют объект, открытый в основной форме.C# Windows Forms, не отображайте форму на панели задач, но заставляйте ее двигаться вперед, когда отображается форма, которая показана там.

Скажем, для простоты это текстовый редактор, и у меня есть MainForm и StyleForm. Теперь мне нужно, чтобы все приложение отображалось как один «бар» на панели задач Windows. Это может быть достигнуто установкой ShowInTaskbar в значение false для StyleForm, но если я, скажем, сосредоточусь на другом приложении, то сосредоточьте мое приложение, только MainForm получит поверх других окон, StyleForm останется скрытым под окном приложения i ранее.

Я нашел ответ здесь Make all forms associated with a program come to the front when one form is selected, но он импортирует dll. Может быть, для этого есть решение .net?

Кроме того, возможно ли отобразить что-то другое на панели задач, а не подпись MainForm?

+0

если оба этих форм существует в одном процессе (тот же ех проекта или дллы проекте), то не могут вы вызываете делегат и сделать вид также видимым? – Zenwalker

ответ

11

Я установил вторую форму ShowInTaskBar = false установите FormBorderStyle в SizableToolWindow, а затем создал его, используя следующий код:

public partial class Form1 : Form 
{ 
    Form2 f2; 

    public Form1() 
    { 
     InitializeComponent(); 

     f2 = new Form2(); 
     f2.Owner = this; // <-- This is the important thing 
     f2.Show(); 
    } 
} 

Это делает подчиненную F2 пребывания на вершине Form1 и шкур и показывает его, когда Form1 скрыт и показан.

EDIT
О, я использовал Visual Studio 2010 и .NET 4 Client Profile, если это важно. Однако это должно работать с другими версиями.

+0

+1. Также в комментарии [Form.Owner] (http://msdn.microsoft.com/en-us/library/system.windows.forms.form.owner.aspx) написано поведение форм при задании свойства. – Reniuz

+1

Владелец является едва используемым имуществом, потому что можно передать форму владельца непосредственно методу Шоу. Как в 'f2.Show (this);' – Steve

+2

@Steve: Верно, но я использовал его здесь, чтобы явно указать OP на свойство 'Owner', что является ключом к решению его проблемы. –

0

В главном окне, вы можете поймать событие фокуса, а затем для каждого подчиненного вызвать метод BringToFront

+0

Это очевидно, но она вводит мерцание, как описано в теме, которую я связал ... – Istrebitel

 Смежные вопросы

  • Нет связанных вопросов^_^