2017-05-23 3 views
-2

Ich habe Probleme, meine "Start" -Taste zu zeigen, wenn ich eine der beiden Radioboxen anwähle.Aktivieren/Deaktivieren der Schaltfläche

Screenshot

Idealfall, wenn eines der Kästchen ausgewählt wird, wird die Schaltfläche ‚Start‘ ermöglichen und erlauben angeklickt werden.

Hier ist mein Code für das Formular, da ich relativ neu zu C# bin Ich bin mir nicht sicher, ob ich den ganzen Code poste, den Sie brauchen, werde ich mehr wenn erforderlich posten.

public partial class mainForm : Form 
{ 
    public mainForm() { 
     InitializeComponent(); 
    } 

    private void label1_Click(object sender, EventArgs e) { 

    } 

    private void mainForm_Load(object sender, EventArgs e) { 
     title.Font = new Font("Arial", 10, FontStyle.Bold); 
    } 

    private void startButton_Click(object sender, EventArgs e) { 
     if (radioDice.Checked) { 
      startButton.Enabled = true; //Activates 'start' button 
      whichDiceGameForm GameForm = new whichDiceGameForm(); 
      GameForm.Show(); 
     } 
     if (radioCard.Checked) { 
      startButton.Enabled = true; //Activates 'start' button 
      whichCardGame GameForm = new whichCardGame(); 
      GameForm.Show(); 
     } 

    } 
} 

[für einen Freund der Veröffentlichung.]

+3

Hinweis: Sie müssen die Optionsschalter der Optionsschaltfläche verwenden, um die Status der Schaltflächen –

+1

zu steuern und zu steuern. Warum sollte eine der beiden Optionen immer ausgewählt werden (dafür ist eine RadioButton-Gruppe gedacht) Nicht immer immer "Start" aktiviert haben? –

+1

Ich weiß, das ist ein Duplikat, aber ich kann es nicht finden, vielleicht hat dein Freund es gelöscht. Wie @ Rev1.0 gesagt hat, ist es absolut sinnlos, die Schaltfläche nicht immer zu aktivieren, da die eine Option oder die andere immer aktiv ist. – Pikoh

Antwort

2

Sie den Code in das Click-Ereignis der Schaltfläche Handler aktivieren gesetzt haben, während Sie es geändert auf dem Kontrollkästchen tun sollten. Nehmen Sie diesen Code :

if (radioDice.Checked) 
{ 
    startButton.Enabled = true; 
} 

zu radioDice Checkbox des geänderten Ereignishandler und diese ein:

if (radioCard.Checked) 
{ 
    startButton.Enabled = true; //Activates 'start' button 
} 

zu Funkkarte Checkbox des geänderten Ereignishandler.

1

Mann, ernsthaft?

ANTWORT: Sie versuchen, die Schaltfläche DISABLED zu aktivieren, wenn Sie auf diese Schaltfläche klicken. Sie können nicht auf die Schaltfläche DISABLED klicken. Außerdem duplizieren Sie Ihren Code.

Schaltfläche sollte immer aktiviert sein. Sie haben nur zwei Möglichkeiten. Jede Auswahltaste aktiviert. Also sollte es immer aktiviert sein. Egal die Wahl. Wenn etwas ausgeblendet ist und die Schaltfläche möglicherweise deaktiviert ist, aktivieren Sie die Schaltfläche im Radio Click-Ereignis.

Zusätzliche Informationen zu Ihrem Code: Jetzt. Über Code-Duplizierung. Schau, was du in startButton_Click machst. Du hast Code dupliziert.

Sie können so etwas wie tun:

BaseGameForm f = null; 
if(radioDice.Checked) 
    f = new DiceGameForm(); 
else 
    if(radioCard.Checked) 
     f = new CardGameForm(); 

f.Show(); 

(BaseGameForm ist Grundform für jedes Spiel) Aber das ist nicht gute Lösung. Bessere Lösung ist (irgendwo in construtor):

radioDice.Tag = new DiceGameForm(); 
radioCard.Tag = new CardGameForm(); 

dann in Start-Schaltfläche klicken Sie für aufgegebenes Radio aussehen:

foreach(Control c in selectGameTypeGroupBox.Controls) //you could do this using LINQ 
{ 
    if((c is RadioButton) && ((RadioButton)c).Checked) 
    { 
     ((Form)c.Tag).Show(); 
    } 
} 

Aber das ist noch nicht gute Lösung, weil Sie alle Spielformen sind die Schaffung beim Start und das ist dumm.

Die bessere Lösung wäre also, den Namen der Spielformklasse in Ihrer Radio-Tag-Eigenschaft zu behalten und dann das Objekt dieser Klasse mithilfe von Reflection und Activator zu erstellen.

Aber das ist immer noch nicht die beste Lösung. Aber ich nehme an, dass dies eine Ihrer ersten Anwendungen ist, also werde ich Ihnen jetzt nicht erzählen, wie man GUI von Logik trennt. Wenn Sie mehr wissen wollen - lesen Sie im Internet. Oder frag einfach.

+0

Werde dies weitergeben. Nach einem Freund gefragt - er kann die Seite zu diesem Zeitpunkt nicht erreichen. Danke :) –

+1

Nein, er muss die Schaltfläche am Anfang deaktivieren, wenn er für RadioButtons standardmäßig auf Falsch gesetzt hat. In diesem Fall kann er einen Fall bekommen, wenn nichts ausgewählt ist und er das Spiel beginnt. –

+1

Ich habe auch über diese Situation geschrieben. Er muss Button Radio Click Event aktivieren. –

Verwandte Themen