从另一个窗口获取5个骰子游戏中骰子的价值

时间:2017-09-29 18:34:07

标签: wpf random user-controls dice

我在WPF开发了一款5骰子游戏。我有一个用户控件,我在其中设计了一个骰子。然后在我的mainWindow上我添加了这个usercontrol 5次(所以这是我的骰子)。

我有一个名为ScoreCheck的课程。在那个类中,我编写代码来获取骰子的值(1,2,3,4,5或6)。

问题是我可以在我的usercontrol dice中执行类似的操作:

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

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

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

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

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

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

Console.WriteLine(throw);

所以现在我得到了所有骰子的价值。像这样:2 6 4 1 5 1。

但我不想要这个。我希望他们在另一个窗口骰子骰子,所以我可以检查分数。所以在我的mainWindow上我命名了我的骰子:dice1,dice2,dice3,dice4和dice5。所以我想在我的ScoreCheck中做这样的事情。

var getmainwindow= Application.Current.Windows.OfType<MainWindow>().SingleOrDefault();
Console.WriteLine(getmainwindow.dice1.throw);

但是我的输出总是为0.

那么有谁知道如何从另一个窗口获取我的骰子的价值?

1 个答案:

答案 0 :(得分:0)

尝试以下代码:

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

Console.WriteLine(mwaanspreken.steen1.worp);

或者,您可以尝试使用应用程序设置。

在Visual Studio中

转到“项目&gt; WpfApp1属性...”

在那里添加一个属性并将其命名为“worpsetting”,确保它是int类型并设置为用户范围。

尝试使用此代码访问设置:

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

如果你想把它读到文本框或类似的东西,你将不得不调用“ToString”方法:

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