C # Windows Forms, skal du ikke vise en formular på proceslinjen, men gør det på fronten, når en formular der vises der er fokuseret

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg laver en applikation, der vil have en grænseflade, der ligner Photoshop: flere separate formularer hjælper alle med at redigere en genstand. Så jeg har flere formularer, hvoraf den ene er 'main' (giver filmenu, indstillingsmenu, osv.) Og andre har kontroller, der redigerer objektet åbnet i hovedform.


Lad os sige for enkelhed dette er en tekst editor og jeg har MainForm og StyleForm. Nu er det, jeg har brug for, at hele applikationen vises som en 'bar' i Windows-proceslinjen. Dette kan opnås ved at indstille ShowInTaskbar til falsk for StyleForm, men så hvis jeg siger, fokuserer andet program, fokuserer jeg mit program. Kun MainForm kommer oven på andre vinduer. StyleForm forbliver skjult under vinduet i programmet, jeg fokuserede tidligere.


Jeg fandt svar her Lav alle former i forbindelse med et program komme til fronten, når en formular er valgt, men den importerer en dll. Måske er der en .net løsning til dette?


Jeg vil også gerne vise noget andet i proceslinjen, ikke MainForms billedtekst, er det muligt?

Bedste reference


Jeg sætter den anden formular til ShowInTaskBar = false, sæt FormBorderStyle til SizableToolWindow og oprettet den derefter ved hjælp af følgende kode:


public partial class Form1 : Form
{
    Form2 f2;

    public Form1()
    {
        InitializeComponent();

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


Dette gør underformen F2 på toppen af ​​Form1 og gemmer og viser den, når Form1 er skjult og vist.


EDIT

Åh, jeg brugte Visual Studio 2010 og .NET 4 Client Profile, hvis det er vigtigt. Det skal dog fungere sammen med andre versioner.

Andre referencer 1


I hovedvinduet kan du fange Focus-begivenheden og derefter for hvert underformopkald BringToFront-metoden