あなたがクラスで何をカバーしているかわからないので、この状況は常に興味深いものです。したがって、上記の私のコメントのように、あなたは矛盾する答えを与えたようです。私は、Form2がForm1のコンストラクターで作成されていると仮定します。チェックされるコンボボックスを決定するための何らかのメソッドが必要になります。バイナリ値をXORしただけです。コメントで述べたように、Form2をShowDialogで開始し、戻り値を調べて、終了するか続行するかを決定します。私はあなたに簡単で汚い例をあげます、それを肉付けするのはあなた次第です。そうでない場合は、もう少しコードを投稿する必要があります
Form1
public partial class Form1 : Form
{
char[] operators;
public Form1()
{
InitializeComponent();
Form2 frm2 = new Form2();
if (frm2.ShowDialog() == DialogResult.OK) //Check for DialogResult Here
{
operators = CreateArray(frm2.GetOperators); // Get ComboBox Values from Form2 and Process them
frm2.Close(); // Close Form2
}
else
Application.Exit(); // If DialogResult is not OK then exit Form
}
private char[] CreateArray( int value)
{
string num = "";
if ((value & 1) == 1)
num += "+";
if ((value & 2) == 2)
num += "-";
if ((value & 4) == 4)
num += "*";
if ((value & 8) == 8)
num += "/";
if ((value & 16) == 16)
num += "%";
return num.ToCharArray();
}
}
Form2
public partial class Form2 : Form
{
int operators;
public Form2()
{
InitializeComponent();
}
private void checkBox_CheckedChanged(object sender, EventArgs e)
{
CheckBox cb = (CheckBox)sender;
//Method that I used for determining CheckBox State. You can use a boolean array or an Enumeration ....
if (cb.Text == "Addition")
operators = operators ^ 1;
else if (cb.Text == "Subtraction")
operators = operators ^ 2;
else if (cb.Text == "Multiplication")
operators = operators ^ 4;
else if (cb.Text == "Division")
operators = operators ^ 8;
else if (cb.Text == "Modulus")
operators = operators ^ 16;
}
public int GetOperators //Property for return value to Form1
{
get { return operators; }
}
}