// 그리고 표시된 체크박스라면 args배열에 이름을 차례대로 저장을 한다.
string[] args = new string[arrayLength];
int argsIndex = 0;
for (int i = 0; i < cbs.Length; i++)
{
if (cbs[i].Checked)
{
cbs[i].Enabled = false;
args[argsIndex++] = cbs[i].Text;
}
}
위 코드대로라면 이미 args에 체크된 체크박스의 이름이 들어간 상태입니다.
예로 1, 3번이 체크됐다면 1, 3번의 이름이 들어가겠지요?
근데 출력하는쪽에서
for (int i = 0; i < src; i++)
{
if (cbs[i].Checked)
{
prime.WriteLine(args[i]);
}
}
이런식으로 체크박스가 체크 되었는지를 또 다시 확인을 하고 있으니까요.
src는 2가 들어가 있을테니 체크박스 0, 1번이 체크되었나 확인하고, 체크 되있으면 출력하게 되겠지요?
이미 체크된 체크박스의 문자열만 들어가 있으므로 위 if (cbs[i].Checked)는 필요 없습니다.
내용추가....
가급적이면 코드를 적어드리지는 않는데요.
지금 보면 불필요한 코드가 너무 많아서 간단히 정리를 했으니까요.
한번 살펴보시고, 어떤것이 불필요했는지를 확인해 보시기 바랍니다.
System.Collections.ArrayList lstName = new System.Collections.ArrayList();
//모든 컨트롤 갯수 만큼 for문을 돌림, 체크박스 뿐아니라 버튼, 라벨까지 전부 포함
foreach (Control control in this.Controls)
{
// 체크박스라면
if (control is CheckBox)
{
// 체크되어 있다면
if(((CheckBox)control).Checked)
{
control.Enabled = false; // Disable상태로 바꾸고
lstName.Add(control.Text); // 텍스트를 저장
}
}
}
lstName.Sort(); // 텍스트를 정렬
// 파일이 없으면 만들고, 있으면 추가함
StreamWriter prime = new StreamWriter(REGISTER_FILE_NAME, true);
prime.WriteLine("--------------예약한 좌석 표시---------------");
// 체크된 이름을 파일에 출력
foreach (String name in lstName)
{
prime.WriteLine(name);
}
prime.Close();
불필요한 체크를 한번 더 하기 때문이네요.
위 코드대로라면 이미 args에 체크된 체크박스의 이름이 들어간 상태입니다.
예로 1, 3번이 체크됐다면 1, 3번의 이름이 들어가겠지요?
근데 출력하는쪽에서
이런식으로 체크박스가 체크 되었는지를 또 다시 확인을 하고 있으니까요.
src는 2가 들어가 있을테니 체크박스 0, 1번이 체크되었나 확인하고, 체크 되있으면 출력하게 되겠지요?
이미 체크된 체크박스의 문자열만 들어가 있으므로 위 if (cbs[i].Checked)는 필요 없습니다.
내용추가....
가급적이면 코드를 적어드리지는 않는데요.
지금 보면 불필요한 코드가 너무 많아서 간단히 정리를 했으니까요.
한번 살펴보시고, 어떤것이 불필요했는지를 확인해 보시기 바랍니다.
오..
코딩이란 저에겐 아직까지 너무나 심오한듯 ...
감사합니다
별말씀을요.
즐프되세요.
댓글 달기