在表单和类winforms之间传递值

时间:2016-06-17 15:52:35

标签: c# winforms null var

我正在尝试将一个值从一个表单传递给一个类来确定游戏的级别,但它会一直传递0值。

我需要通过" nivelElegido"值为1或2

 int nivelElegido;

 private void pictureBox1_Click(object sender, EventArgs e)
 {
     nivelElegido = 1;

     Form1 frm = new Form1();
     frm.Show();
     this.Hide();          
 }

 private void pictureBox2_Click(object sender, EventArgs e)
 {
     nivelElegido = 2;
     Form1 frm = new Form1();
     frm.Show();
 }

 public int niveEle
 {
     get { return nivelElegido; }
 }

我更改了值,在另一种形式中尝试使用它。

 using (var nivelarmando = new NivelArmando())
 {
     niveleleg = nivelarmando.niveEle;
 }
 pala.nivo = niveleleg;
 pala.Traelo();

pala.traelo从类中提取数据,pala.nivo是级别。

public void Traelo()
{
    if (nivo==1)
    {
    }
    else if (nivo==2)
    {
    }

但是nivo带有0而不是1或2.我该怎么办?

2 个答案:

答案 0 :(得分:1)

看起来顶级代码来自NivelArmando类。如果是这样,这段代码

 using (var nivelarmando = new NivelArmando())
 {
     niveleleg = nivelarmando.niveEle;
 }

正在创建一个新的NivelArmando实例,在这种情况下, nivelElegido 将被初始化为0. niveleleg 将被设置为零并且看不到值你在其他地方修改过。

您应该在Form1上创建一个属性,或者将 nivelElegido 的值传递给Form1的构造函数,然后在 Traelo()函数中使用该值。

答案 1 :(得分:0)

使用variables.nivelElegido = 1获取并设置变量 阅读变量.nivelElegido

Public Class variables

    Public Shared Property nivelElegido() As Integer
        Get
            Return m_nivelElegido
        End Get
        Set(value As Integer)
            m_nivelElegido = value
        End Set
    End Property
    Private Shared m_nivelElegido As Integer

End Class