2016-08-11 2 views
-1

CheckBox 컨트롤이 얼마나 많은지 확인해야하는 프로그램을 만들고 있는데, 이는 GroupBox입니다.그룹 박스에서 몇 개의 체크 박스가 선택되어 있습니까?

여러 가지 방법을 시도했지만 작동하지 않습니다.

어떻게 만들 수 있습니까?

// This is one of the many things I tried...   
public CheckBox rNum; 
//This method is used on FormLoad. 
public void CreateBoxes() 
{ 
    for (int i = 0; i < 36; i++) 
    { 
     rNum = new CheckBox(); 
     rNum.Text = i.ToString(); 

     //CheckBoxes added to flowLayoutPanel. 
     flw.Controls.Add(rNum); 
    } 
} 

public int count;   
//This method is used on Button Click 
public void CountIt() 
{ 
    foreach (CheckBox box in groupBox.Controls.OfType<CheckBox>()) 
    { 
     if (box.Checked) 
     { 
      count++; 
     } 
    }  
    MessageBox.Show(count.ToString()); 
} 
+2

제대로 작동하지 않는다고 말할 수 있다면 도움이 될 것입니다. 개수가 너무 많습니까? 카운트가 0입니까? 'CheckBoxes'는'groupBox'의 직접 자식입니까, 아니면 중간 'Panel'입니까? – adv12

+1

'Count'를 증가시킬 때'CheckBox'가 체크되었는지 아닌지를 실제로 확인하지는 않습니다 .... –

+1

'Form'에서 75 개의'CheckBoxes'를 생성했다고 내 대답에 대한 당신의 코멘트에서 말하고 있습니다. 'Load' 이벤트 핸들러. 어떤 컨트롤에 추가할까요? 'groupBox'하려면? 또는 '양식'? 아니면 다른 컨트롤에? – adv12

답변

1

는 여러분의 의견과 질문에 대한 편집을 바탕으로, 당신은 당신이 groupBox, 그들을하지 추가하기 FlowLayoutPanelCheckBoxes을 찾고해야합니다. 당신의 FlowLayoutPanelflw라는 것을 감안할 때, 다음을 수행 : 지금 당신의 질문에 반영됩니다 CheckBox을 선택한 경우에만 카운트를 증가하고있어

public void CountIt() 
{ 
    foreach (CheckBox box in flw.Controls.OfType<CheckBox>()) 
    { 
     if (box.Checked) 
     { 
      count++; 
     } 
    } 

    MessageBox.Show(count.ToString()); 
} 

참고. 이 검사를하지 못한 것은 원래 코드의 버그였습니다.

+0

응답 해 주셔서 감사합니다. 하지만이 선량은 어쨌든, 나는 전에 이것을 시도 ... MessageBox 항상 0을 보여줍니다 ... – Mizuchi

+1

다음 질문에 대한 내 의견에 요청한 정보를 제공하십시오. – adv12

+0

나는 35 개 정도의 체크 박스가 있다는 것을 잊어 버렸다. 그래서 for 루프를 사용하여 'checkbox chk = new CheckBox()'를 사용하여 formload에서 생성했다. – Mizuchi

2

는이 같은 LINQ 쿼리를 사용할 수 있습니다

var count = flw.Controls.OfType<CheckBox>().Count(x=>x.Checked); 

이 확인됩니다 FLW에서 CheckBox 컨트롤의 수를 반환합니다.

+0

제목에 수정이 필요합니다. * // CheckBoxes가 flowLayoutPanel. *에 추가되었지만 * 제목에서 * GroupBox의 * 체크 박스를 요청하고 있습니다. *. 어쨌든 그들이에 호스팅 된 경우 해당 컨트롤에 대한 쿼리를 사용하십시오. –

+0

flw의 계시가 원래의 질문에 대한 편집으로 왔습니다. – adv12

+0

@ adv12 OP가 편집 후 질문 제목과 설명을 수정하는 것을 잊어 버린 것 같습니다. 아마 그들은 제목과 제목 설명에 FlowLayoutPanel을 의미 할 것입니다. –

관련 문제