작업하다보면 많은 다름이름을 갖은 컨트롤을 하나씩 제어하는게 번거로운 일이다
이에 다음과 같이 사용되는 컨트롤을 배열에 넣어서 관리하고자 한다.
하기 예제는 GroupBox8개, 각 GroupBox내에 TextBox 8개, PictureBox 8개 정보를
컨트롤러 배열에 넣고 제어하기 위한 코드이다.
// Form Loading과 동시에 GroupBox에 설정된 PicBox1-8, Intxtbox1-8 control를 배열에 담는다.
GroupBox[,] group = new GroupBox[2, m_nGrpBoxCnt];
group[0, 0] = InGrpbox1; group[0, 1] = InGrpbox2;
group[0, 2] = InGrpbox3; group[0, 3] = InGrpbox4;
group[0, 4] = InGrpbox5; group[0, 5] = InGrpbox6;
group[0, 6] = InGrpbox7; group[0, 7] = InGrpbox8;
group[1, 0] = OutGrpbox1; group[1, 1] = OutGrpbox2;
group[1, 2] = OutGrpbox3; group[1, 3] = OutGrpbox4;
group[1, 4] = OutGrpbox5; group[1, 5] = OutGrpbox6;
group[1, 6] = OutGrpbox7; group[1, 7] = OutGrpbox8;
for (int Sep = 0; Sep < 2; Sep++) // Input / Output 구분
{
for (int cnt = 0; cnt < m_nGrpBoxCnt; cnt++) // Group box 구분(1~8)
{
GroupBox tempGrp = new GroupBox();
tempGrp = group[Sep, cnt];
for (int i = 0; i < tempGrp.Controls.Count; i++) // group box내에 있는 control
{
if (tempGrp.Controls[i].GetType() == typeof(PictureBox))
{
string szCtlrName = tempGrp.Controls[i].Name.ToString();
// picture box name different (Inpicbox1-64/OutPicBox1-64)
int nCtlNo = 0;
if (Sep == 0) nCtlNo = Convert.ToInt32(szCtlrName.Remove(0, 8));
else nCtlNo = Convert.ToInt32(szCtlrName.Remove(0, 9));
m_picStsbox[Sep, nCtlNo - 1] = (PictureBox)tempGrp.Controls[i];
}
else if (tempGrp.Controls[i].GetType() == typeof(TextBox))
{
string szCtlrName = tempGrp.Controls[i].Name.ToString();
int nCtlNo = Convert.ToInt32(szCtlrName.Remove(0, 8));
m_txtIOStr[Sep, nCtlNo - 1] = (TextBox)tempGrp.Controls[i];
}
} // for (int i = 0
} // for (int cnt
} // for (int Sep
'프로그래밍 > .Net' 카테고리의 다른 글
delegate 활용 함수 콜.. (0) | 2014.01.17 |
---|---|
DllImport 사용 ini 파일에서 정보 가져오거나 Write하기 (0) | 2014.01.17 |
C#에서 using 사용하기 (0) | 2014.01.17 |
C# 스레드사용시 메서드 이름이 필요합니다 (0) | 2014.01.17 |
[링크스크랩] partial class를 계층적으로 보이게 하는 방법 (0) | 2014.01.17 |