2017-09-29 4 views
0

私はWPFで5ダイスのゲームを開発しています。私はサイコロの設計をしたユーザーコントロールを持っています。その後、私のmainWindowでこのusercontrolを5回追加しました(これは私の言い訳です)。5diceのゲームのサイコロの値を別のウィンドウから取得する

私はScoreCheckという名前のクラスを持っています。そのクラスでは、サイコロの値を得るためのコードを書いています(1,2,3,4,5,6)。

問題は、私は私のユーザーコントロールのサイコロにこのような何かを行うことができるということです。

int worp = rand.Next(1, 7); 
switch (worp) 
      { 
       case 1: 
        dso1.Fill = new SolidColorBrush(steenkleur); 
        dso2.Fill = new SolidColorBrush(steenkleur); 
        dso3.Fill = new SolidColorBrush(steenkleur); 
        dso4.Fill = new SolidColorBrush(oogkleur); 
        dso5.Fill = new SolidColorBrush(steenkleur); 
        dso6.Fill = new SolidColorBrush(steenkleur); 
        dso7.Fill = new SolidColorBrush(steenkleur); 
        break; 

       case 2: 
        dso1.Fill = new SolidColorBrush(steenkleur); 
        dso2.Fill = new SolidColorBrush(steenkleur); 
        dso3.Fill = new SolidColorBrush(oogkleur); 
        dso4.Fill = new SolidColorBrush(steenkleur); 
        dso5.Fill = new SolidColorBrush(oogkleur); 
        dso6.Fill = new SolidColorBrush(steenkleur); 
        dso7.Fill = new SolidColorBrush(steenkleur); 
        break; 

       case 3: 
        dso1.Fill = new SolidColorBrush(steenkleur); 
        dso2.Fill = new SolidColorBrush(steenkleur); 
        dso3.Fill = new SolidColorBrush(oogkleur); 
        dso4.Fill = new SolidColorBrush(oogkleur); 
        dso5.Fill = new SolidColorBrush(oogkleur); 
        dso6.Fill = new SolidColorBrush(steenkleur); 
        dso7.Fill = new SolidColorBrush(steenkleur); 
        break; 

       case 4: 
        dso1.Fill = new SolidColorBrush(oogkleur); 
        dso2.Fill = new SolidColorBrush(steenkleur); 
        dso3.Fill = new SolidColorBrush(oogkleur); 
        dso4.Fill = new SolidColorBrush(steenkleur); 
        dso5.Fill = new SolidColorBrush(oogkleur); 
        dso6.Fill = new SolidColorBrush(steenkleur); 
        dso7.Fill = new SolidColorBrush(oogkleur); 
        break; 

       case 5: 
        dso1.Fill = new SolidColorBrush(oogkleur); 
        dso2.Fill = new SolidColorBrush(steenkleur); 
        dso3.Fill = new SolidColorBrush(oogkleur); 
        dso4.Fill = new SolidColorBrush(oogkleur); 
        dso5.Fill = new SolidColorBrush(oogkleur); 
        dso6.Fill = new SolidColorBrush(steenkleur); 
        dso7.Fill = new SolidColorBrush(oogkleur); 
        break; 

       case 6: 
        dso1.Fill = new SolidColorBrush(oogkleur); 
        dso2.Fill = new SolidColorBrush(oogkleur); 
        dso3.Fill = new SolidColorBrush(oogkleur); 
        dso4.Fill = new SolidColorBrush(steenkleur); 
        dso5.Fill = new SolidColorBrush(oogkleur); 
        dso6.Fill = new SolidColorBrush(oogkleur); 
        dso7.Fill = new SolidColorBrush(oogkleur); 
        break; 
      } 

Console.WriteLine(worp); 

だから今、私はすべてのサイコロの値を取得します。このようなもの:2 6 4 1 5 1.

しかし、私はこれを望んでいません。別の窓にサイコロでサイコロをして、スコアを確認することができます。だから私のメインウインドウで私はサイコロの名前をつけた:dice1、dice2、dice3、dice4、dice5。だから私はScoreCheckでこのようなことをしたい。

var mwaanspreken = Application.Current.Windows.OfType<MainWindow>().SingleOrDefault(); 
Console.WriteLine(mwaanspreken.steen1.worp); 

しかし、その後、私の出力は、だから、誰もが別のウィンドウから、私のサイコロの値を取得する方法を知っているん常に0

のですか?別の方法としては、アプリケーションの設定を使用して試すことができます

var mwaanspreken = ((MainWindow)Application.Current.MainWindow);

Console.WriteLine(mwaanspreken.steen1.worp);

答えて

0

は、このコード行を試してみてください。 Visual Studioで

に行く「プロジェクト> WpfApp1プロパティ...」

そこにプロパティを追加し、「worpsetting」という名前を付け、必ずそれがint型であり、ユーザスコープに設定します。

設定にアクセスするには、このコードを試してみてください。

Properties.Settings.Default.worpsetting = ((MainWindow)Application.Current.MainWindow).steen1.worp;

あなたは「ToStringメソッド」メソッドを呼び出す必要がありますそのようにテキストボックスか何かにそれを読みたい場合は、次の

Textbox1.Text = Properties.Settings.Default.worpsetting.ToString();

+0

まだNull @Dark Templar –

+0

ええとアプリケーション設定の使用はどうですか? –

+0

アプリケーションの設定はどういう意味ですか? @Dark Templar –

関連する問題