将值分配给类的变量,并使用该值从另一个类分配给另一个变量

时间:2017-09-28 02:27:45

标签: c#

我无法将变量的值从一个类分配到另一个类。我试过用几种方法做但没有用,变量在我的方法中仍然没有价值。

头等舱:

namespace Simulador
{
    public partial class Cidade : Window
    {
        private int QNTTodinho;

        private void todinhobotao_Click(object sender, RoutedEventArgs e)
        {
            TodinhoBotaoo();
        }

        public void TodinhoBotaoo()
        {
             QNTTodinho += 1;
             MainWindow Valor = new MainWindow(QNTTodinho);
        }
    }
}

第二课:

namespace Simulador
{
    public partial class MainWindow : Window
    {
        private int QNTTodinho;

        public MainWindow(int qNTTodinho)
        {
            QNTTodinho = Convert.ToInt32(qNTTodinho);
        }

        private void Salgadinho_Click(object sender, RoutedEventArgs e)
        {
            Dinheiro22.Content = QNTTodinho.ToString();
        }
     }
}

1 个答案:

答案 0 :(得分:0)

我猜你的应用程序的启动表单是 MainWindow。这意味着您正在创建MainWindow的实例并将其作为主应用程序窗口运行。

如果是这种情况,那么创建MainWindow的另一个实例就像你正在做的那样并在构造函数中将整数传递给它不会影响实际的主窗口。它只是在MainWindow的副本中设置值,然后直接废弃该副本。

解决这个问题的一种方法是,尽管不是最佳做法,但是要将要修改的成员更改为静态成员,如下所示:

public partial class MainWindow : Window
{
    public static int QntTodinho { get; set; }

    public MainWindow()
    {
    }

    private void Salgadinho_Click(object sender, RoutedEventArgs e)
    {
        Dinheiro22.Content = this.QntTodinho.ToString();
    }
 }

public partial class Cidade : Window
{
    private int qntTodinho = 0;

    private void todinhobotao_Click(object sender, RoutedEventArgs e)
    {
        TodinhoBotaoo();
    }

    public void TodinhoBotaoo()
    {
         this.qntTodinho += 1;
         MainWindow.QntTodinho = this.qntTodinho;
    }
}

另请注意,我已完成以下更改:

  • 用于私人会员的pascalCasing
  • 将CamelCasing用于公共成员
  • 在不需要的情况下摆脱Convert.ToInt32

此解决方案需要考虑的事项主要是线程安全以及缺少在值更改时通知MainWindow的方法。