我按照this tutorial进行了数学测验计划。
我想添加一个调试菜单来更改不同的内容,例如使用debugForm 上的按钮停止Form1的计时器。我得到了按钮和表单设置,但我不知道如何导入整数,如:
int TimeLeft
into debugForm for use in Form1.
Here is my code that I got so far.
我不知道从哪里开始,所以我需要帮助,如果你需要我澄清一些事情,那就问问吧。谢谢!
修改:
很抱歉不太清楚。
我的问题是:如何从一个表单中获取整数并将它们放在另一个表单中并让它们被识别?
答案 0 :(得分:2)
在debugForm
课程中添加:
private int m_timeLeft;
public int TimeLeft
{
get
{
return m_timeLeft;
}
set
{
m_timeLeft = value;
// some other actions if necessary
}
}
现在,您可以通过Form1
:
private void makeMenu(object sender, EventArgs e)
{
debugForm form = new debugForm();
form.TimeLeft = this.TimeLeft;
form.Show();
}
答案 1 :(得分:0)
为什么不将整数和任何其他成员/字段声明为public,以便您可以从任何表单(类)访问它们。通过不指定访问修饰符,成员默认为私有,因此您无法从其他任何位置访问它们。
编辑:
好的,这是成员访问的一个简单示例:
首先声明你的表格(这是一个类)
public class FormaA :Form
{
public int myFirstInteger = 100; //the public keyword in front of it does all the job
public int mySecondInteger = 50; //second integer declaration
}
现在让我们声明另一种形式
public class FormB : Form {
//this is the FormB constructor
//if you don't declare one C# will declare one for you
public FormB()
{
//you have access to the members in the CONSTRUCTOR
int myFormAInteger = formA.myFirstInteger; //Whoaallllaaaa ! magic ! you have acces to the member
int myFormASecondInteger = formA.mySecondInteger ; //the second integer
}
}
但请记住第一表格的任何更改都不会在第二个表格中更新您必须使用 REFERENCE 来获取对更新值的访问权限。
希望这有帮助
考虑读一本书(Deitel Beginning C#是一本非常好的书,有一些很好的例子,而且Wrox Beginning Visual C#2010/2012是一本非常好读的书) 在这里发布您的问题很有用,但在转向帮助之前,请尝试自己解决问题。
答案 2 :(得分:0)
如果修改debugform的构造函数,则可以在声明新表单时传递所需的任何值:
Form 2 Code
-------------------
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace Math_Quiz
{
public partial class debugForm : Form
{
public debugForm(int value1, string value2)
{
InitializeComponent();
//set the values to local variables.
}
private void timeButton_Click(object sender, EventArgs e)
{
}
}
}
private void makeMenu(object sender, EventArgs e)
{
debugForm form = new debugForm(intvalue, stringvalue);
form.Show();
}
答案 3 :(得分:0)
我发现传递int的最简单方法是,从一个到下一个的字符串值是:
private void gameStart_Click(object sender, EventArgs e)
{
string machineName = System.Environment.MachineName;
int numberOfPlayers = 10;
multiplayerGame y = new multiplayerGame(numberOfPlayers, machineName);// multiplayerGame is the next form, and y is just a very simple variable the new form plus variables that are being passed is assigned to
this.Hide();();// hides this (current) form
y.ShowDialog();//here is where the variable y is used with .ShowDialog to make your program open the new form
}
}
上面的代码是我的一个程序的一个例子,是我在我的表单中使用的,传递我想在下一个表单中使用的变量。在下一个表单中,您需要为要查看的变量添加以下代码,并将其分配给整个表单的可用变量。
public partial class multiplayerGame : Form
{
private int numPlayers;// This is the variable that will be used on this form for the int variable being passed
private string myPcName; ;// This is the variable that will be used on this form for the string variable being passed
}
接下来,在您的程序部分中,您将初始化所需的一切,以允许form1中的变量传递到新表单,并将其分配给为新表单创建的变量。在我的例子中,这是多人游戏。
public multiplayerGame(int numberOfPlayers, string machineName)// int so the new form knows your passing an int, then the name of your variable same goes for the string variable
{
this.myPcName = machineName;// here you assign the private string created above for this form to equal the string variable being passed into this from form the previous form
this.numPlayers = numberOfPlayers; // here you assign the private int created above for this form to equal the int variable being passed into this from form the previous form
InitializeComponent();
}
然后你将拥有一个可以被识别的变量,并且一旦你的第二个加载,就会有从前一个表格设置的值。此时只剩下你需要的变量。