【发布时间】:2017-05-10 03:58:25
【问题描述】:
我应该为孩子们制作一个数学练习程序。他们应该能够选择 1 个操作和数字的位数(1、2 或 3 位)。然后它必须根据孩子的选择提出10个随机问题,然后一旦他们完成了测验,它就会显示他们的结果以及他们错了哪些问题。
我在 form1 上进行了两个选择,操作和数字编号,它们被分配了数字 (1. (*) 2. (/) 3. (+) 4. (-))。我需要做的就是将操作编号和数字# 传达给form2,然后将在其中生成和显示问题。
到目前为止,这是我的 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 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();
}
}
}
这是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 Form2()
{
InitializeComponent();
}
private void FinishedBtn_Click(object sender, EventArgs e)
{
}
}
}
【问题讨论】:
-
嗨,萨尔!您能否将您的问题编辑为:1. 包含更少的代码,2. 说出您尝试过的内容,有效和无效的内容,以及 3. 具体说明您想发送/接收哪些信息以及您需要帮助的具体内容和?另外,我认为@DourHighArch 可能是正确的,这个问题是重复的。
-
如果您愿意,可以前往help center 获取有关如何针对 SO 提出更合适问题的提示。祝你好运,谢谢!
-
你把变量放在了错误的表格里。
public static int operation = 0; public static int digits = 0;应该在 form2 中,而不是 1。它们是 Form 的属性,可以在调用新实例后设置(如Form2 settingsForm = new Form2(); -
@rudib 好的,我现在将变量放在 form2 中,我对“调用新实例”的意思感到困惑。如果表格 2 是“订阅者”,表格 1 是“发布者”,我在表格 1 中输入什么。这并不紧急,但它会在 4 天内到期。
-
settingsForm 是“新实例”。很抱歉让您感到困惑。参考:docs.microsoft.com/en-us/dotnet/articles/csharp/…