2014-10-14 4 views
0

목록 상자에서 선택한 여러 항목을 단추 클릭으로 텍스트 상자에 표시 할 수 있지만 메시지 상자에는 어떻게 표시 할 수 있습니까? 메시지 상자에 첫 번째 항목을 표시하는 것은 문제가 아니지만 한 번에 여러 항목이 표시된다는 의미입니다. Skill이 정의된다 당신은 표시되지 않습니다목록 상자의 선택된 항목을 C# Windows Form의 메시지 상자에 표시

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) 
{ 

    Skill = checkedListBox1.SelectedItem.ToString(); 
    if (e.NewValue == CheckState.Checked) 
    { 
     listBox1.Items.Add(Skill); 
    } 
    else 
    { 
     listBox1.Items.Remove(Skill); 
    } 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show("You have selected following Skills : \n"+Skill, "Selected Skills", 
    MessageBoxButtons.OK, MessageBoxIcon.Information); 
} 

답변

0

제안 제발 ...하지만, 아마도 클래스의 속성으로. SkillcheckedListBox1_ItemCheck으로 초기화됩니다. 선택 항목이 변경된 경우 해당 값은 유효하지 않습니다 (실제 값은 반영되지 않음).

코드에 대한 가장 짧은 변경은 버튼 처리기에서 Skill을 사용하지 않고 목록 상자에서 현재 상태를 가져 오는 것입니다 (해당 스타일을 선호하는 경우 로컬 변수에 넣을 수도 있음).

private void button1_Click(object sender, EventArgs e) 
{ 
    var selectedSkills = checkedListBox1.SelectedItem.ToString(); 
    MessageBox.Show("You have selected following Skills : \n"+selectedSkills, "Selected Skills", 
    MessageBoxButtons.OK, MessageBoxIcon.Information); 
} 
0

마지막으로 확인해야 할 값으로 Skill을 덮어 쓰는 것 같습니다. 따라서 메시지 상자에 마지막으로 클릭 한 항목과 관련된 Skill이 항상 표시됩니다. 당신이 그들 모두를 표시 할 경우에 따라서, 당신은 listBox1.Items.Cast<string>().Aggregate((o, n) => o.ToString() + "," + n.ToString())

* 참고 같은 것을 함께 MessageBox.Show 호출에 Skill를 교체해야합니다 : Skill은 객체의 어떤 유형 Cast<string>를 교체합니다.

같은 :

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e) 
{ 
    Skill = checkedListBox1.SelectedItem.ToString(); 

    if (e.NewValue == CheckState.Checked) 
    { 
     listBox1.Items.Add(Skill); 
    } 
    else 
    { 
     listBox1.Items.Remove(Skill); 
    } 
} 

private void button1_Click(object sender, EventArgs e) 
{ 
    MessageBox.Show("You have selected following Skills : \n"+ listBox1.Items.Cast<string>().Aggregate((o, n) => o.ToString() + "," + n.ToString()), "Selected Skills", 
    MessageBoxButtons.OK, MessageBoxIcon.Information); 
} 
0

당신은 선택 항목을 통해 반복해야하고 텍스트 상자로 추가. 메시지 상자에 표시하려면 선택한 항목을 문자열 변수에 연결하여 메시지에 사용해야합니다.

private void button1_Click(object sender, EventArgs e) 
{ 
    StringBuilder skills = new StringBuilder(); 
    foreach (object item in listBox1.SelectedItems) 
    { 
     skills.AppendLine(item.ToString()); 
    } 

    MessageBox.Show("You have selected following Skills : \n" + skills.ToString(), "Selected Skills", 
    MessageBoxButtons.OK, MessageBoxIcon.Information); 

}