2012-11-24 3 views
2

Это моя форма 2, здесь есть флажки.Как моя форма 1 знает, что флажок включен из формы 2?

enter image description here

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

 char[] select = new char[] { '+', '-', '/', '%', '*' }; 
     var rand = new Random(); 
     char num = select[rand.Next(5)]; 
     lbloperator.Text = Convert.ToString(num); 

Если только проверка того, моя форма 1 будет только выполнить добавление, или если добавить, вычесть, моя форма 1 будет выполнять только добавление и вычитание. Пожалуйста, помогите мне с этим! :(

form1

enter image description here

ответ

1

Существует буксирные способов сделать это:

1- первый способ является определить общественную собственность в form2, который может сказать form1 статус CheckBox1:

Form2:

public bool MyCheckBoxStatus 
{ 
    get {return checkBox1.Checked;} 
} 

Форма 1 (пример):

Form2 frm = new Form2; 
frm.ShowDialog(); 

if (frm.MyCheckBoxStatus) 
{ 
    //Do something... 
} 

2- Другой способ: если вы используете приложение Windows Forms, то все ваши элементы управления имеют свойство с именем Модификаторы изменить его значение для общественности и написать этот код в Form1:

Form2 frm = new Form2; 
frm.ShowDialog(); 

if (frm.checkBox1.Checked) 
{ 
    //Do something... 
} 
+0

Спасибо, рад, что сработало! но есть проблема, это showDialog, поэтому каждый раз, когда я нажимаю кнопку, он продолжает открываться. -Во всяком случае, спасибо большое! :) –

+0

Вы можете использовать метод Show(), если хотите, но будьте обеспокоены тем, что метод Show() вызывает: 1- Form1 не будет ждать ответа пользователя. 2- Пользователь может вернуться в Form1 без закрытой формы2. – MoHaKa

0

Я не слишком уверен, что именно то, что вы просите, но это звучит, как вы пытаетесь передать некоторые данные между формами.

В Form2, вы может добавить общественную собственность, которая читает этикетку

public string TheOperator { 
    get { return lblOperator.Text; } 
} 

Тогда из Form1, вы можете создать новый экземпляр form2, а затем ссылаться на Prope когда необходимо.

Form2 fm = new Form2(); 
fm.Show(); 
string theOp = fm.TheOperator; 

//////////

В ответ на ваши изменения: Вы можете добавить это к Form1, обнажая переменную оператора есть:

public string MyOperator { 
    get { return lblOperator.Text; } 
    set { 
       lblOperator.text = value; 
       //You can perform any updates to 
       //your calculations here, or call 
       //another method to do so 
     } 
} 

private void OpenForm2() 
{ 
    Form2 frm2 = new Form2(this); 
    frm2.Show(); 
} 

Тогда внутри формы Form2, вы передаете ссылку на форму 1, чтобы вы могли получить доступ к общественному имуществу:

private Form1 frm; 
public New(Form1 _frm) 
{ 
    frm = _frm; 
} 

private void UpdateOperator() 
{ 
    //call this method, calculating your operator and then 
     //set the operator on the first form (variable frm) to 
     //What you need it to do 
    frm.MyOperator = lblOperator.Text; 
} 
+0

извините за мой плохой английский, хотя, я просто хочу передать данные из моей формы2 в form1, если был проверен chkbxAdd, тогда на моей форме1 lbloperator отобразит только «+», теперь, если в форме 2 все включено, в моей форме1 отобразятся выбранные операторы , Например, я включил их все, тогда возможный вывод был бы, 1 + 1,1-1,1 * 1,1/1,1% 1, что-то вроде этого. –

+0

Здесь говорится, что метод должен иметь тип возврата. public New (Form1_frm) он высокорослый «Новый» –

+0

Прошу прощения, но я новичок в этом. –

0

Попробуйте следующее:

public partial class Form2: Form 
{ 
public string checkBoxSelected = ""; 
} 


public partial class Form1 : Form 
{ 
private void MakeResult() 
{ 
Form2 result = new Form2(); 
result.checkBoxSelected = "+"; 
result.Show(); 
} 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^