2017-09-29 5 views
0

Je développe un jeu de 5 dés dans WPF. J'ai un contrôle d'utilisateur où j'ai fait la conception d'un dé. Puis sur ma fenêtre principale, j'ai ajouté 5 fois cette commande (donc ce sont mes dés).Récupère la valeur d'un dé dans un jeu en 5d'une autre fenêtre

J'ai une classe nommée ScoreCheck. Dans cette classe, j'écris le code pour obtenir la valeur du dé (1, 2, 3, 4, 5 ou 6).

Le problème est que je peux faire quelque chose comme ça dans mes dés UserControl:

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); 

Alors maintenant, j'obtenir la valeur de tous dices. Quelque chose comme ceci: 2 6 4 1 5 1.

Mais je ne veux pas cela. Je les veux dés par dés sur une autre fenêtre pour que je puisse vérifier le score. Donc, sur ma fenêtre principale, j'ai nommé mes dés: dice1, dice2, dice3, dice4 et dice5. Donc, je veux faire quelque chose comme ça dans mon ScoreCheck.

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

Mais ma sortie est toujours 0.

ne Alors quelqu'un sait comment obtenir la valeur de mes dés d'une autre fenêtre?

Répondre

0

Essayez cette ligne de code:

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

Console.WriteLine(mwaanspreken.steen1.worp);

vous pouvez également essayer d'utiliser paramètre d'application.

dans Visual Studio allez dans « Projet> Propriétés WpfApp1 ... »

Ajouter une propriété là-bas et nommez-le « worpsetting », assurez-vous qu'il est d'un type int et mis à la portée de l'utilisateur.

Essayez ce code pour accéder au paramètre:

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

Si vous voulez lire à une zone de texte ou quelque chose comme ça, vous devrez appeler la méthode « ToString »:

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

+0

Nope still null @Dark Templar –

+0

Hmm qu'en est-il de l'utilisation des paramètres d'application? –

+0

Comment voulez-vous dire les paramètres de l'application? @Dark Templar –