2017-06-01 4 views
-1

Ich habe eine WinForms-Anwendung, wo mein Formular der Form.Wiederherstellen-Schaltfläche nicht zu maximieren Schaltfläche in meinem WinForm

protected override void OnResize(EventArgs e) 
    { 
     if (WindowState == FormWindowState.Minimized) 
      //I do something here 
     //*what I have tried* 
     if (MouseButtons == MouseButtons.Left) 
      WindowState = FormWindowState.Normal; 
     //end of *what I have tried* 
     base.OnResize(e); 
     if (WindowState == FormWindowState.Minimized) 
     { 
      //I do a few things here 
     } 
     else if (bMinimized) 
      //I do a few things here 
    } 

Nachdem ich die Form zu maximieren, kann ich die Form durch einen Doppelklick auf die Titelleiste und die Maximieren-Schaltfläche erscheint anstelle der Schaltfläche wiederherstellen Größe ändern/wiederherstellen. Aber anstatt auf die Titelleiste doppelzuklicken, wenn ich das Formular durch Klicken und Halten der Titelleiste ziehe, wird das Formular wiederhergestellt und das OnResize-Ereignis wird ausgelöst, aber die Maximierungsschaltfläche wird nicht angezeigt. Ich muss noch einmal auf die Wiederherstellungsschaltfläche klicken, damit die Maximierungsschaltfläche angezeigt wird. Warum passiert dies? Bearbeite ich kein Ereignis, das anzeigt, dass die Größenänderung abgeschlossen wurde, wenn geklickt und gezogen wird.

+0

ich den Fensterzustand in den normalen, in der Hoffnung gesetzt, dass er auf die Maximierungsschaltfläche wird angezeigt anstelle der Restore-Taste führen würde. Aber es hat in keiner Weise geholfen. – Sai

+0

Ich habe diesen Teil nicht verstanden: * Wenn ich das Formular ziehe, indem ich die Titelleiste klicke und halte, wird das Formular wiederhergestellt *. Das Formular befindet sich in einem normalen Zustand (nicht maximiert oder minimiert), dann klicken Sie auf die Titelleiste und halten Sie gedrückt, und das Formular wird nur durch Ziehen wiederhergestellt? Oder meinst du das, wenn du an den oberen Bildschirmrand ziehst, wo Windows 7+ es automatisch wiederherstellt? Wie auch immer, nur eine Einstellung, versuche "base.OnResize (e);" vor allem in "OnResize" zu nennen. – Alisson

+0

@Alisson Das Formular ist maximiert und ich klicke und ziehe das Formular, das wiederhergestellt wird, sobald ich anfange zu ziehen. Aber das wiederhergestellte Formular sollte die Schaltfläche zum Maximieren haben, stattdessen wird weiterhin die Wiederherstellungsschaltfläche angezeigt. – Sai

Antwort

0

Wie auch immer, ich denke, wenn Sie eine Bool-Variable namens "isMaximzed" erstellen. Dann, wenn das Formular maximiert ist, wird unsere Variable auf wahr gesetzt. und die Maximierungstaste verschwindet.

mit if-Anweisungen mit einer if und else-Anweisung, so sieht es so aus. So kann es nur einen Zustand geben .... die Form ist entweder maximiert oder nicht.

if (WindowState == FormWindowState.Minimized) 
    { 
     isMaximized = false; 

    } else if (WindowState == FormWindowState.Maximized) 
    { 
     isMaximized = true; 
    } 

    if (isMaximized == true) { 

     // don't show maximize button 
    } else 
    { 
     // show maximized button 
    } 

Ich hoffe, Sie erhalten den Punkt

+0

Und wie kann OP die maximierte Taste anzeigen/verbergen? – Alisson

+0

@Jamisco Das Problem ist nicht anzeigen/ausblenden Schaltfläche maximieren. Das Standardverhalten von WinForms, bei dem die Schaltfläche "Wiederherstellen" zur Schaltfläche "Maximieren" wird, wenn das Formular durch Ziehen wiederhergestellt wird (wenn es sich im maximierten Status befindet), tritt nicht auf. Um es klarer zu machen, versuche folgendes. Im aktuellen Browserfenster (nicht Tab, aber das gesamte Browserfenster), maximieren, dann auf die Titelleiste klicken und ziehen, Sie werden feststellen, dass sich die Wiederherstellungsschaltfläche zum Maximieren ändert, sobald das Fenster gezogen wird (und die Größe geändert wird)). Dieses Verhalten wird in meinem Fall nicht angezeigt. – Sai

+0

hmmm, interessant, die Win-Formulare verbergen die Maximierungsschaltflächen nicht bereits automatisch? .. Meins macht ... Aber ich kann vorschlagen, dass du versuchst, ein neues Formular zu erstellen, dann schaue dir seine Standardeigenschaften an und ändere sie in deinem main Form jeweils – Jamisco

Verwandte Themen