2017-05-07 3 views
-1

Ich soll ein Mathe-Übungsprogramm für Kinder machen. Sie sollten in der Lage sein, 1 Operation und die Anzahl der Ziffern (1, 2 oder 3 Ziffern) zu wählen. Es muss dann 10 zufällige Fragen entsprechend der vom Kind getroffenen Auswahl stellen, dann, sobald sie das Quiz abgeschlossen haben, sollte es ihre Ergebnisse zeigen und welche Fragen sie falsch beantwortet haben.Übergeben von Daten zwischen form1 und form2 in C#

Ich habe zwei Auswahlen auf Form1, Operationen und Anzahl der Ziffern, die Nummern (1. (*) 2. (/) 3. (+) 4. (-)) zugeordnet sind. Alles, was ich tun muss, ist die Operation Nummer und Anzahl der Ziffern zu form2 zu kommunizieren, wo die Fragen generiert und angezeigt werden.

Hier ist mein Code für form1 bisher:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace FinalProject 
{ 
public partial class Form1 : Form 
{ 
    public static int operation = 0; 
    public static int digits = 0; 

    public Form1() 
    { 
     InitializeComponent(); 
    } 
    // this is to make sure only one box is checked for both selections. Starts here 
    private void label1_Click(object sender, EventArgs e) 
    { 

    } 

    private void button2_Click(object sender, EventArgs e) 
    { 

    } 

    private void MulCB_CheckedChanged(object sender, EventArgs e) 
    { 


     if (MulCB.Checked == true) 
     { 
      operation = 1; 
      DivCB.Checked = false; 
      AddCB.Checked = false; 
      SubCB.Checked = false; 
     } 
    } 

    private void DivCB_CheckedChanged(object sender, EventArgs e) 
    { 
     if (DivCB.Checked == true) 
     { 
      operation = 2; 
      MulCB.Checked = false; 
      AddCB.Checked = false; 
      SubCB.Checked = false; 
     } 
    } 

    private void AddCB_CheckedChanged(object sender, EventArgs e) 
    { 
     if (AddCB.Checked == true) 
     { 
      operation = 3; 
      DivCB.Checked = false; 
      SubCB.Checked = false; 
      MulCB.Checked = false; 
     } 
    } 

    private void SubCB_CheckedChanged(object sender, EventArgs e) 
    { 
     if (SubCB.Checked == true) 
     { 
      operation = 4; 
      DivCB.Checked = false; 
      AddCB.Checked = false; 
      MulCB.Checked = false; 
     } 
    } 

    private void oneDCB_CheckedChanged(object sender, EventArgs e) 
    { 
     if(oneDCB.Checked == true) 
     { 
      digits = 1; 
      twoDCB.Checked = false; 
      threeDCB.Checked = false; 
     } 
    } 

    private void twoDCB_CheckedChanged(object sender, EventArgs e) 
    { 
     if (twoDCB.Checked == true) 
     { 
      digits = 2; 
      oneDCB.Checked = false; 
      threeDCB.Checked = false; 
     } 
    } 

    private void threeDCB_CheckedChanged(object sender, EventArgs e) 
    { 
     if (threeDCB.Checked == true) 
     { 
      digits = 3; 
      oneDCB.Checked = false; 
      twoDCB.Checked = false; 
     } 
    } 
    private void button8_Click(object sender, EventArgs e) 
    { 
     // operations: 1. (*) 2. (/) 3. (+) 4. (-) 
     // digits are as number indicates. 



     // Second window popup. 
     Form2 settingsForm = new Form2(); 
     settingsForm.Show(); 
    } 
} 
} 

Hier ist form2, so ziemlich nackt.

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace FinalProject 
{ 

public partial class Form2 : Form 
{ 


    public Form2() 
    { 
     InitializeComponent(); 
    } 

    private void FinishedBtn_Click(object sender, EventArgs e) 
    { 


    } 
} 

}

+0

Hallo Sal! Können Sie bitte Ihre Frage bearbeiten: 1. enthalten viel weniger Code, 2. sagen, was Sie versucht haben, was hat und nicht funktioniert hat, und 3. sagen Sie konkret, welche Informationen Sie senden/erhalten möchten und was Sie speziell Hilfe benötigen mit? Auch denke ich, dass @DourHighArch wohl Recht hat, dass diese Frage ein Duplikat ist. –

+0

Wenn Sie möchten, können Sie in der [Hilfe] (https://stackoverflow.com/help/how-to-ask) nach Tipps suchen, wie Sie eine geeignetere Frage für SO stellen können. Viel Glück und danke! –

+0

Sie setzen die Variablen in die falsche Form. 'public static int operation = 0; public static int digits = 0; 'sollen in form2 sein, nicht 1. Sie sind Eigenschaften des Formulars, das nach dem Aufruf einer neuen Instanz gesetzt werden kann (zB' Form2 settingsForm = new Form2(); ' – rudib

Antwort

0

Dies könnte funktionieren. Es gibt Kommentare im Code.

Der Workflow erstellt eine neue Instanz der Klasse Form2 und legt zwei öffentliche Variablen fest. Öffentlich bedeutet, dass auf sie von außerhalb der Klasse zugegriffen werden kann (siehe here, wenn Sie möchten). Dann wird die Methode Show() aufgerufen und das Formular erscheint. Im Code Form2 haben die öffentlichen Variablen jetzt die zuvor angegebenen Werte und können verwendet werden.

Form1:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace FinalProject 
{ 
public partial class Form1 : Form 
{  
    public Form1() 
    { 
     InitializeComponent(); 
    } 
    // this is to make sure only one box is checked for both selections. Starts here 
    private void label1_Click(object sender, EventArgs e) 
    { 

    } 

    private void button2_Click(object sender, EventArgs e) 
    { 

    } 

    private void MulCB_CheckedChanged(object sender, EventArgs e) 
    { 


     if (MulCB.Checked == true) 
     { 
      operation = 1; 
      DivCB.Checked = false; 
      AddCB.Checked = false; 
      SubCB.Checked = false; 
     } 
    } 

    private void DivCB_CheckedChanged(object sender, EventArgs e) 
    { 
     if (DivCB.Checked == true) 
     { 
      operation = 2; 
      MulCB.Checked = false; 
      AddCB.Checked = false; 
      SubCB.Checked = false; 
     } 
    } 

    private void AddCB_CheckedChanged(object sender, EventArgs e) 
    { 
     if (AddCB.Checked == true) 
     { 
      operation = 3; 
      DivCB.Checked = false; 
      SubCB.Checked = false; 
      MulCB.Checked = false; 
     } 
    } 

    private void SubCB_CheckedChanged(object sender, EventArgs e) 
    { 
     if (SubCB.Checked == true) 
     { 
      operation = 4; 
      DivCB.Checked = false; 
      AddCB.Checked = false; 
      MulCB.Checked = false; 
     } 
    } 

    private void oneDCB_CheckedChanged(object sender, EventArgs e) 
    { 
     if(oneDCB.Checked == true) 
     { 
      digits = 1; 
      twoDCB.Checked = false; 
      threeDCB.Checked = false; 
     } 
    } 

    private void twoDCB_CheckedChanged(object sender, EventArgs e) 
    { 
     if (twoDCB.Checked == true) 
     { 
      digits = 2; 
      oneDCB.Checked = false; 
      threeDCB.Checked = false; 
     } 
    } 

    private void threeDCB_CheckedChanged(object sender, EventArgs e) 
    { 
     if (threeDCB.Checked == true) 
     { 
      digits = 3; 
      oneDCB.Checked = false; 
      twoDCB.Checked = false; 
     } 
    } 
    private void button8_Click(object sender, EventArgs e) 
    { 
     // operations: 1. (*) 2. (/) 3. (+) 4. (-) 
     // digits are as number indicates. 



     // Second window popup. 
     // it's the question form, right? 
     Form2 questionForm = new Form2(); 
     //"Write" your settings in the other form's variables 
     //You will have to write code that finds out which checkbox is which number! For now its fixed. 
     questionForm.operation = 2; 
     questionForm.digits = 1; 
     questionForm.Show(); 
     //Hide Form1 
     this.Hide(); 
    } 
} 
} 

Form2:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace FinalProject 
{ 

public partial class Form2 : Form 
{ 
    public static int operation; 
    public static int digits; 


    public Form2() 
    { 
     InitializeComponent(); 

    } 

    //do NOT paste this. It can be added by creating an event handler 
    // you also might not need this, but this method is called when this Form appears. It's an example. 
    // https://msdn.microsoft.com/en-us/library/zwwsdtbk(v=vs.80).aspx 
    private void Form2_Load(object sender, EventArgs e) 
    { 
     //here you can use your variables for example (also anywhere within this class!) 
     //e.g. 
     Textbox1.Text = (string)operation; 
    } 

    private void FinishedBtn_Click(object sender, EventArgs e) 
    { 


    } 
} 
} 
Verwandte Themen