2016-05-24 2 views
-3

So habe ich 2 Formen:C# WinForms - Taste auf Form2, zu verbergen Form1

  • Form1
  • Form2

Es gibt einen Knopf auf Form2, dass Ich mag würde haben Verberge Form1, wenn du darauf klickst.

Knopf Klicken Sie von Knopf in Form2

var mainFrm = new Form1(); 
mainFrm.Hide(); 

Dies tut nichts. Mir fehlt offensichtlich etwas, aber ich kann es nicht verstehen.

Jede Hilfe wird definitiv geschätzt!

+0

Warum erstellen Sie eine neue Instanz von Form1 'var mainFrm = new Form1();'? Wenn Sie beabsichtigen, ein bereits angezeigtes Form1 auszublenden, müssen Sie das bereits vorhandene Formular bearbeiten und Hide() darauf aufrufen. – GER

Antwort

0

Wenn Ihr Formular1 bereits auf der Seite vorhanden ist, warum müssen Sie es dann erneut initialisieren? Setzen Sie den sichtbaren Status auf "false", um ihn auszublenden.

mainFrm.Visible = false; 
0

ohne mehr den Codes zu sehen, es ist schwer zu beantworten ist, aber Sie müssen auf jeden Fall die die alten Form1 verweisen, die bereits sichtbar ist und ausblenden. Sie erstellen ein neues Formular und verstecken es.

0

Sie müssen Ihre Form2-Klasse definieren, um den Verweis auf das Hauptformular zu speichern.

public partial class Form2 : Form 
{ 
    /* reference to the main form will be stored here */ 
    private Form1 _mainForm; 

    public Form2(Form1 mainForm) 
    { 
     InitializeComponent(); 
     /* Initialize the main form field */ 
     this._mainForm = mainForm; 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     /* Set the main form visibility to false */ 
     _mainForm.Visible = false; 
    } 
} 

Nun, wenn Sie schaffen die Form2 Instanz nur das Hauptformular an den Konstruktor hinzu:

/* Show the form2 */ 
_form2 = new Form2(this); 
_form2.Show(); 

Hinweis: diese wird auf das Formular verweisen, die das Form2-Objekt erstellt.

0

Sie könnten eine statische Formulartyp-Eigenschaft in Ihrem Form1 erstellen und festlegen, wenn Form1 angezeigt wird, und verwenden Sie es dann zum Ausblenden Ihres Formulars Hier ist ein Code, der für mich arbeitete.

private void button1_Click(object sender, EventArgs e) 
    { 
     var objForm1 = new Form1(); 
     Form1.Fom1ref = objForm1; 
     objForm1.Show(); 
    } 

    private void button2_Click(object sender, EventArgs e) 
    { 
     Form1.Fom1ref.Hide(); 

    } 

Hier ist die Eigenschaft, die in Form1 festgelegt werden sollte.

public static Form Fom1ref { get; set; } 
Verwandte Themen