2016-01-05 3 views
2

сделать мое окно WinForms, чтобы всегда оставаться на вершине, я могу использовать:окно всегда на вершине в приложении

TopMost = true; 

Но что сделает окно всегда оставаться на вершине. Я хочу, чтобы он оставался на вершине приложения. Поэтому, когда я сворачиваю приложение или меняю приложение, я не хочу, чтобы он оставался на вершине больше.

+1

Вы пробовали сделать мода модальным? –

+0

Да, но я не могу использовать свое приложение так, как хочу, потому что фокус находится только в новом окне. Мне нужно только окно сверху, но вы можете использовать мое приложение в фоновом режиме, как обычно. – Cyrix

+0

Итак, это какой-то набор инструментов, что-то в этом роде? Очень непонятно, что здесь используется. –

ответ

0

Вместо установки TopMost = true; сделать вашу форму диалога с помощью Form1.ShowDialog();

+0

Было бы здорово, если бы я не использовал мое приложение, как хочу. Я хочу использовать мое приложение как обычно, хотя Iv создал новые окна, которые всегда будут на вершине. – Cyrix

3

Я думаю, что Вы ищете Form.Owner собственности

Чтобы сделать форму, принадлежащую другой форме, присвоить его свойству владельца ссылка на форма, которая будет владельцем.

Если форма принадлежит другой форме, она закрыта или скрыта с формой владельца. Например, рассмотрим форму с именем Form2, которая принадлежит форме с именем Form1. Если Form1 закрыт или сведен к минимуму, Form2 также закрыт или скрыт. Собственные формы также не отображаются за их формой владельца. Вы можете использовать принадлежащие формы для окон, такие как поиск и замена окон, которые не должны исчезать при выборе формы владельца.

В случае, если Вы не показываете форму ребенка от «окна приложения», самый простой способ, чтобы иметь доступ к окну приложения (он же основной форме), чтобы использовать что-то вроде этого

static class Program 
{ 
    [STAThread] 
    static void Main() 
    { 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 
     Application.Run(MainForm = new MyAppForm()); 
    } 
    public static MyAppForm MainForm { get; private set; } 
} 

и затем

var childForm = new MyChildForm(); 
childForm.Owner = Program.MainWindow; 
//childForm.ShowInTaskbar = false; 
childForm.Show(); 
+0

Я думаю, что ты прав. Я просто читал об этом: http://www.csharp-examples.net/topmost-form/ Спасибо, il попробуйте это сейчас! :) – Cyrix

+0

Я согласен с этим ответом, потому что это решает проблему именно так, как я просил. Но его очень уродливо держать ссылку mainform в этом большом приложении. Но я попытаюсь решить эту проблему. Спасибо! – Cyrix

+0

@Cyrix См. Обновление, надеюсь, что это поможет. –

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