Laden...

Aktives Fenster hervorheben / Hintergrundfenster transparent

Erstellt von schorge vor 8 Jahren Letzter Beitrag vor 7 Jahren 3.031 Views
S
schorge Themenstarter:in
129 Beiträge seit 2014
vor 8 Jahren
Aktives Fenster hervorheben / Hintergrundfenster transparent

Hallo,

viele Benutzer haben ein Problem mit kleinen Dialogen die sich auf einem
maximiertem Fenster öffnen und wegen dem kleinen Rahmen nicht unterscheiden können
was jetzt aktiv ist.

Kann man die Transparenz der hinteren Fenster bzw. die nicht aktiven Fenster ändern oder
auch für andere Lösungsvorschläge wäre ich dankbar.

J
251 Beiträge seit 2012
vor 8 Jahren

Wo ist denn das Problem?

Mit den gegeben Informationen ist es theo. möglich mit Transparenz rum zu spielen.

S
schorge Themenstarter:in
129 Beiträge seit 2014
vor 8 Jahren

Das Problem ist ich weis keinen Rat an die Sache ranzugehen...

es soll ja nicht Trasparent sein, ehr als wenn man durch ein Milchglas schaut,
bzw dass die hinteren Fenster verschwommen erscheinen.

Meine mögliche Variante einfach ein UserControl darüberzulegen welches
teiltransparent ist fällt leider weg, da es

this.Opacity = 0.83;

im UserControl nicht möglich ist...

weis keiner einen Rat?

J
251 Beiträge seit 2012
vor 8 Jahren

Vllt hilft zum Verständnis ein Schema, wer in etwa was aufruft.
Ansonsten können wir nur raten und i-was zusammen Dichten, was immer implementiert ist.

Ruft das maximierte Fenster das Dialog auf? Dann weißt das aufrufende Fenster "Ich mache ein Aufruf und mache mich solange dünne".

S
schorge Themenstarter:in
129 Beiträge seit 2014
vor 8 Jahren

Also:

Ich habe ein Main-Form - maximiert.

Darauf rufe ich einzelne Form's als Dialoge
auf, die sich mittig in dem großen Main-Form zentrieren.

Die Benutzeringabe am Main-Form ist wegen dem Dialogaufruf ja
schon unterbunden, das einzigste Problem ist,
das ich dem Nutzer den Dialog noch besser sichtbar machen will,
damit er erst nicht mehrmals am Main-Form rumdrückt und dann erst merkt,
ohh - hier ist ja ein Fenster in der Mitte!

Ich hoffe ich habe es so verständlich erklärt 😁

16.835 Beiträge seit 2008
vor 8 Jahren

Stell Dir mal selbst die Frage, ob die Dialoge wirklich hilfreich sind oder Du das nicht auch in der entsprechenden Form einbetten könntest.
Dialoge sind nicht wirklich gut für die Benutzerführung, weshalb Du sie in modernen Anwendungen kaum noch findest.

damit er erst nicht mehrmals am Main-Form rumdrückt und dann erst merkt,
ohh - hier ist ja ein Fenster in der Mitte!

Einer der vielen Gründe, wieso man Dialoge vermeidet.

S
schorge Themenstarter:in
129 Beiträge seit 2014
vor 8 Jahren

Wie aber sieht dann die feine Art aus bei einer sehr großen Tabelle bzw. DGV
mit verknüpften Daten am Main-Form.

Zur Datenänderung/Erstellung weitere Eigenschaften hinterlegen, etc.
kommt dann der Dialog. Wo kann ich dann den Dialog einbinden aus Platzgründen
doch eigentlich nicht möglich...

771 Beiträge seit 2009
vor 8 Jahren

Du könntest auch einfach die Main Form disablen.

1.029 Beiträge seit 2010
vor 8 Jahren

Hi,

da gibt's im Prinzip diverse Möglichkeiten - bei dir hört sich das nach einer Datenerfassung an - bei uns im ERP läuft das über ein TabbedDocumentInterface und ist (meiner Meinung nach) für Programme mit vielen Übersichten und vielen Erfassungsfenstern eine gute Sache.

Könnte es nicht leiden, wenn ich im WindowsExplorer 10+ offene Fenster eines Programms sehe - was aber für solche Anwendungen ja typisch wäre.

Zumindest in der Theorie ist allerdings auch durchaus möglich, dass dein Fenster die DataGridView für die Zeit der Datenerfassung ausblendet und stattdessen halt ein entsprechendes UserControl anzeigt.

Was für dich das richtige ist musst du selbst abschätzen.

LG

S
schorge Themenstarter:in
129 Beiträge seit 2014
vor 7 Jahren

Muss nochmal dieses Thema hier auffrischen, da ich eine Lösung habe, nur leider etwas performancedürftig:

Main Form1 hat ein DataGridView etc.

über einen Aufruf einer Methode
bekomme ich ein Eingabe-Fenster in dem ich wiederum Eingabefenster etc... und
Bearbeitungsfenster öffnen kann.

Code der Form1 mit dem Öffnen des Dialoges und dem ausgrauen mit der Form2gray:


private void button1_Click(object sender, EventArgs e)
        {
            // das transparente Form zuerst laden, dauert aber länger obwohl 
            // nicht viel geladen werden muss !?

            Form2gray gr = new Form2gray();
            gr.Show();
            FormEingabe frm = new FormEingabe();
            if (frm.ShowDialog() == DialogResult.OK)
            {
                // Code ausführen ...
                int idA = frm._ladeId;
                gr.Close();
            }
            else
            {
                gr.Close();
            }
        }

Das "zeischenform" wird nicht in der Taskleiste angezeigt, und schließt
mit Beenden des Dialoges, aber es dauert lange bis das Form geladen ist X(

Code von dem "zwischenform":


 private void Form2gray_Load(object sender, EventArgs e)
        {
            this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
            this.Name = "Form2gray";
            this.Opacity = 0.5D;
            this.Text = "";
            this.WindowState = System.Windows.Forms.FormWindowState.Maximized;

            // die Taskleiste soll bedienbar bleiben
            Left = Top = 0;
            Width = Screen.PrimaryScreen.WorkingArea.Width;
            Height = Screen.PrimaryScreen.WorkingArea.Height;
        }


Würde das ganze gerne schöner gestalten ...