将公共变量传递给click事件wpf

时间:2016-12-12 04:52:55

标签: c# wpf

任何人都可以解释下面2个案例之间的区别吗?

点击按钮时; label1显示 12 ,但标签为 0 。 通过单击按钮,我想为公共变量赋值,并在MainWindow或其他类中使用它们。

  public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        label.Content = num1;
    }
     public int num1;

    private void button_Click(object sender, RoutedEventArgs e)
    {    
       num1 = 15;
       label1.Content = 12;   
    }    
}

enter image description here

提前谢谢你..

2 个答案:

答案 0 :(得分:2)

int是一种值类型。将值类型变量分配给另一个值类型变量时,将复制该值。例如:

int a = 4;
int b = a;
a = 2;

// a = 2
// b = 4

编辑:如果您的目标是能够从任何地方分配字段并让它自动更新您的标签,您可以使用属性:

private int num1;
public int Num1
{
    get
    {
        return num1;
    }
    set
    {
        num1 = value;
        Label.Content = num1;
    }
}

// Elsewhere

Num1 = 15; // Assign to the property rather than the field directly

答案 1 :(得分:0)

你的问题在这里,

public MainWindow()
    {
        InitializeComponent();
        label.Content = num1; //Assigned to 0 as int don't have null
    }
     public int num1;

在此,

private void button_Click(object sender, RoutedEventArgs e)
    {    
       num1 = 15; //you set num1, not label.Content
       label1.Content = 12;   
    }

所以,这是解决方案。

private void button_Click(object sender, RoutedEventArgs e)
        {    
           num1 = 15; //you set num1, not label.Content
           label.Content = num1;
           label1.Content = 12;   
        }