2017-02-01 1 views
1

Ich habe ein Menüformular mit zwei Kontrollkästchen erstellt. Wenn ich eine davon auswähle, möchte ich ein anderes Formular deaktivieren. Ich habe versucht, diesen Code zu schreiben:C# Formular deaktivieren

void CheckBox1CheckedChanged(object sender, EventArgs e) 
    { 
     if (checkBox1.Checked == true){ 
      checkBox1.Checked=true; 
      checkBox2.Checked=false; 

      classificheForm cf=new classificheForm(); 
      cf.Enabled=false; 

      classificheJunioresForm cjf=new classificheJunioresForm(); 
      cjf.Enabled=false; 
     } 
    } 

aber funktioniert nicht, in der Tat Formen sind nicht deaktivieren. Wie kann ich es reparieren?

+4

Sie müssen die Instanz des Formulars verwenden, das Sie deaktivieren möchten, Sie erstellen ein neues Formular und versuchen, es zu deaktivieren – TheLethalCoder

+2

ist ein anderes Formular bereits angezeigt? Zeigen Sie den Teil Ihres Codes, wo Sie eine Instanz davon zeigen –

Antwort

4

Sie einen neuen Form erstellen und sofort zu deaktivieren es:

classificheForm cf=new classificheForm(); 
cf.Enabled=false; 

Stattdessen sollten Sie den Verweis auf die Form verwenden Sie deaktivieren wollen. wenn im Konstruktor Zum Beispiel erstellen Sie das Formular:

classificheForm cf; 

public SomeClassConstructor() 
{ 
    cf=new classificheForm(); 
} 

Dann in Ihrem Fall würden Sie gerade tun:

cf.Enabled=false; 

Beachten Sie, dass auch und zeigen Formen wie verstecken können:

cf.Hide(); 
cf.Show(); 

Beachten Sie, dass das Deaktivieren eines Form wie ein XY-Problem klingt. Wenn Sie das Formular nicht mehr benötigen, schließen Sie es oder verstecken Sie es. Verwenden Sie auch nur Form s, wenn sie benötigt werden, usw. ...

Wenn Sie eine Haupt-Form deaktivieren müssen, während Sie einen Dialog form verwenden Sie es am besten ist,

dialog.ShowDialog(); 

zu nennen, da diese Nutzer blockieren Lage, mit dem Haupt Form zu interagieren, bis sie den Dialog geschlossen haben.

+0

Vielleicht habe ich etwas falsch in einem anderen Teil des Codes. In meinem Menü habe ich einen Button, um mich in diesem Formular umzuleiten, aber wenn ich das Kontrollkästchen anwähle, möchte ich, dass das Formular nicht angezeigt wird. Ich muss auch die Taste ändern? – Matteo

-1

können Sie einfach ein Formular

classificheForm cf=new classificheForm(); 
cf.Show(); 

classificheJunioresForm cjf=new classificheJunioresForm(); 
cjf.Hide(); 

Oder was meinst du mit "disable" verbergen?

Verwandte Themen