2017-09-29 4 views
0

WPF에서 5 개의 주사위 게임을 개발 중입니다. 나는 내가 주사위의 디자인을 만들었던 usercontrol을 가지고있다. 그런 다음 내 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); 

을 지금은 모두 오지의 가치를 얻을 :

문제는 내가 내 UserControl을 주사위에서 같은 것을 할 수 있다는 것입니다. 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

그래서 사람이 다른 창에서 내 주사위의 값을 얻는 방법을 알고 있나요 항상?

Console.WriteLine(mwaanspreken.steen1.worp);

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

는 다른 방법이 응용 프로그램 설정을 사용하여 시도 할 수 있습니다 :

답변

0

는 코드 줄을보십시오. Visual Studio에서

은이 건물 이름을 "worpsetting을"추가 "... 프로젝트> WpfApp1 속성"에 이동이있는 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

응용 프로그램 설정을 어떻게 의미합니까? @ 다크 템플러 –