그룹 상자를 동적으로 만들려고하는데이 GB는 선택시 확인란에서 만듭니다.C에서 동적 그룹 상자를 만드는 방법
의미 첫 번째 CB를 선택한 다음 다른 동적 확인란과 함께 1GB를 만들면 5 번째 확인란을 선택해야합니다. 세 번째 검사를 선택하면 나머지 다른 확인란은 몇 개의 다른 확인란으로 만들어집니다. 이 코드는 제가 디자인 타임에 이미 생성 된 고정 그룹 박스에 대한 동적 체크 박스를 만들 수 있습니다.
내 시나리오는 - 5 지점에 여러 배치가 있습니다. 이제 사용자는 동적으로 체크 박스에서 브랜치를 선택할 것이고, 그 기준으로 각 브랜치에 대한 그룹 박스에 btaches가 표시 될 것입니다. BRANCH1 브랜치 브랜치 브랜치 Branch5 사용자 선택 3 다음 GB1 여기 Branch5의 일괄 을 제시해야한다 브랜치의 일괄 및 GB2을 보여줍니다 5 가지 코드 인 경우 -
private void RO_SelectedIndexChanged(object sender, EventArgs e)
{
groupBox1.Controls.Clear();
String m = RO.SelectedItem.ToString();
Console.WriteLine(m);
aCommand2 = new OleDbCommand("select * from branch_tbl,region_tbl where branch_tbl.region_id=region_tbl.region_id and region_tbl.region_name LIKE '"+m +"'", main_connection);
aAdapter2 = new OleDbDataAdapter(aCommand2);
ds2 = new DataSet();
aAdapter2.Fill(ds2, "app_info");
ds2.Tables[0].Constraints.Add("pk_bno", ds2.Tables[0].Columns[0], true);
int bran_count = ds2.Tables[0].Rows.Count;
Console.WriteLine(bran_count);
checkBox = new System.Windows.Forms.CheckBox[bran_count];
for (int i = 0; i < bran_count; ++i)
{
checkBox[i] = new CheckBox();
checkBox[i].Name = "radio" + Convert.ToString(i);
checkBox[i].Text = ds2.Tables[0].Rows[i][2].ToString();
checkBox[i].Location = new System.Drawing.Point(125 * i, 15);
groupBox1.Controls.Add(checkBox[i]);
checkBox[i].CheckStateChanged += new System.EventHandler(CheckBoxCheckedChanged);
}
}
int count = 1;
int position = 1;
//Code for handling event when branch check box is selected or unselected
private void CheckBoxCheckedChanged(object sender, EventArgs e)
{
CheckBox c = (CheckBox)sender;
//Label myLabel;
String str = null;
if (c.Checked == true)
{
str = c.Text;
aCommand3 = new OleDbCommand("select * from batch_tbl where batch_branch LIKE '" + str + "'", main_connection);
aAdapter3 = new OleDbDataAdapter(aCommand3);
ds3 = new DataSet();
aAdapter3.Fill(ds3, "app_info");
ds3.Tables[0].Constraints.Add("pk_bno", ds3.Tables[0].Columns[0], true);
int batch_count = ds3.Tables[0].Rows.Count;
//filling the groupbox with batch code by generating dynamic checkboxes
for (int i = 0; i < batch_count; ++i)
{
checkBox[i] = new CheckBox();
checkBox[i].Name = "check" + Convert.ToString(i);
checkBox[i].Text = ds3.Tables[0].Rows[i][1].ToString();
Console.WriteLine(checkBox[i].Text);
checkBox[i].Location = new System.Drawing.Point(104*position, 30);
groupBox2.Text = c.Text;
groupBox2.Controls.Add(checkBox[i]);
position++;
count++;
}
}
else
{
count--;
this.Controls.RemoveByKey("lbl" + c.Name);
this.Update();
}
}
이 코드는 매우 잘하지만 얼마나 많은 몰라 브랜치 CB는 select를 사용합니다. 따라서 브랜치 체크 박스를 선택할 때 런타임에 GB를 생성해야하기 때문에 선택한 각 브랜치에 GB를 어떻게 할당 할 수 있습니까?