2016-12-12 4 views
0

誰でも私に以下の2つのケースの違いを説明できますか?クリックイベントwpfにパブリック変数を渡す

ボタンをクリックすると、 label1はですが、ラベルはです。 ボタンをクリックすることで、パブリック変数に値を割り当て、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

+0

あなたが尋ねようとしたものが得られません。説明してください。 –

答えて

2

intが値型..です事前に、ありがとうございます。値型変数を別の値型変数に代入すると、その値がコピーされます。たとえば、次のように

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

// a = 2 
// b = 4 

EDIT:あなたの目標はどこからでもフィールドに割り当てると、それは自動的にラベルを更新持つことができるのであれば、あなたはプロパティを使用することができます。

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 
+0

最高の回答です。パブリックフィールドは非常に悪い習慣です。プロパティが解決策です。投票された.. – Everyone

+0

@AmmarSalmanそれはあなたが誰に尋ねるかによって異なります。私はあなたに同意しますが、プロパティの中には悪い習慣もあり、本当の "ベスト"な解決策はゲッタとセッタメソッドです。 – Abion47

+0

C++のプログラマは、常にそれを提案します。とにかく、getterとsetterは結局最も安全です。静的変数の場合は、getterとsetterを使用する方が良いです。 – Everyone

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; 
     } 
関連する問題