2016-04-05 12 views
0

Ich führe einen Fragebogen mit 10 Fragen. First Form.cs ist nur Startknopf, um die erste Frage in der neuen Form.cs zu öffnen.Halten der Punktzahl über mehrere Formularfenster

Neues Formular hat 3 Optionsfelder, von denen jedes verschiedene Punkte zurückgeben soll (0, 5, 10). Diese Punkte sollten sich über alle Formulare ansammeln, und ein Gesamtwert sollte dann im endgültigen Form.cs angezeigt oder in SQL usw. hochgeladen werden.

Ich habe versucht, es zu codieren, aber ich bin mir nicht sicher, ob es der beste Weg ist.

namespace XX 
{ 
public partial class Form2 : Form 
{ 
    public Form2() 
    { 
     InitializeComponent(); 
    } 

    int points; 
    int totalscore = 0; 

    private void btnCANCEL_Click(object sender, EventArgs e) 
    { 
     this.DialogResult = DialogResult.Cancel; 
    } 

    private void zeropoint_CheckedChanged(object sender, EventArgs e) 
    { 
     if (zeropoint.Checked == true) 
     { 
      points = 0; 
      totalscore = totalscore + points; 
     } 

    } 

    private void fivepoint_CheckedChanged(object sender, EventArgs e) 
    { 
     if (fivepoint.Checked == true) 
     { 
      points = 5; 
      totalscore = totalscore + points; 
     } 
    } 

    private void tenpoint_CheckedChanged(object sender, EventArgs e) 
    { 
     if (tenpoint.Checked == true) 
     { 
      points = 10; 
      totalscore = totalscore + points; 
     } 
    } 

    Form3 thirdForm = new Form3(); 
    private void btnOK_Click(object sender, EventArgs e) 
    { 
     this.DialogResult = DialogResult.OK; 
     this.Hide(); 
     var form3 = new Form3(); 
     form3.FormClosed += (s, args) => this.Close(); 
     form3.Show(); 

    } 

} 
+1

Ihr Beitrag ist nicht klar, auf was das Problem ich s oder was du fragst. – LarsTech

+2

Sie könnten den Score an den Konstruktor jedes Formulars übergeben – n1ff

+0

Wenn Sie versuchen, wechselnde Informationen zwischen Formularen zu teilen, möchten Sie möglicherweise in den C# -Delegaten suchen. – user2867342

Antwort

1

Ich würde eine Klasse erstellen, die Ihre Punktzahl als ein Feld enthält. Sie würden einen Verweis auf ein Objekt dieser Klasse in Ihrem Hauptformular speichern. Wenn Sie ein neues Formular öffnen, können Sie die Objektreferenz an dieses Formular übergeben. Alle Änderungen an der Partitur in diesem Objekt sind weiterhin über die Referenz in Ihrem Hauptformular zugänglich, nachdem die separaten Formulare geschlossen wurden.

Zusätzlich, wenn Sie herausfinden, dass Sie zusätzliche gemeinsame Daten benötigen, können Sie einfach Felder für die Score-Klasse hinzufügen, um sie auch überall zugänglich zu machen.

0

Sie wollen eine statische Klasse

static class Scoring 
{ 
    public static int CurrentPoints { get; set; } 
    public static int TotalScore { get; set; } 

} 

dann zu nennen es

Scoring.CurrentPoints += 10; 
Verwandte Themen