2016-08-09 2 views
0

Я новичок в программировании и тем, что я не могу сделать и не могу найти из Интернета о проблеме, которую у меня есть.Как получить доступ к инструментам формы из других классов

Я делаю базовую игру в рулетку для практики.

Я хочу сделать вычисления в отдельном классе ради «чистого кодирования».

Но я не могу управлять такими вещами, как radioButton, CheckBox, TextBox из класса вычислений, который я сделал.

Как я могу получить к ним доступ?

Например, я хочу проверить, есть ли номер Rulet, если четный или нечетный из другого класса.

// form.cs 

public static int ruletNumber; 

private void btnPlay_Click(object sender, EventArgs e) 
{ 
    Random rnd = new Random(); 
    ruletNumber = rnd.Next(0,37); 
    Calculation.Calc(); 

} 



//Calculation.cs 
class Calculation 
{ 
     public static void Calc() 
     { 
      // this is where i must see if the radioButton is Checked or Not, but it dosent see it from this Class... 
      if (ruletNumber/2 == 0 && rdbEven.Checked == true) 
      { 
       //some code... 
      } 
     } 

} 
+1

параметры Pass. Передайте значение ruletNumber и проверенное состояние как параметры метода Calc. –

+0

Определите классы сущностей, которые имеют свойства для ваших вычислений. Из формы манипулируйте свойствами класса в соответствии с щелчками и другими. Затем передайте этот объект классу Calculation, чтобы выполнить расчет оттуда. как мудрый, вы можете контролировать информацию об объекте по мере необходимости. –

+0

невозможно управлять radioButton в других классах? другие тогда form.cs? – Mizuchi

ответ

1

Передайте эти параметры в ваш метод Calc() как

ruletNumber = rnd.Next(0,37); 
Calculation.Calc(ruletNumber, rdbEven.Checked); 

В этом случае вам придется изменить сигнатуру метода в классе, как показано ниже. Кроме того, я считаю, ваше состояние ruletNumber/2 == 0 должно быть ruletNumber % 2 == 0, так как вы пытаетесь проверить, является ли это четное/нечетное число

class Calculation 
{ 
     public static void Calc(int ruletNumber, bool radiostate) 
     { 
     if (ruletNumber % 2 == 0 && radiostate) 
     { 
      //some code... 
     } 
    } 
Смежные вопросы