2012-06-22 23 views
0

我需要将选中的项目从一个清单框添加到另一个清单框。 我不应该多次添加一个项目到第二个检查列表框中。 的设计有两个checklistboxes及以下按钮:> >>,<,< < 我曾尝试以下,但不是代码能够得到任何display.Please让我知道我错了: 如何将检查项目从一个清单框添加到另一个清单框?

namespace TwoListBox 
{ 
    public partial class UserControl1 : UserControl 
    { 
     public UserControl1() 
     { 
      InitializeComponent(); 
     } 

     public delegate void OneArrowForwardClickHandler(); 

     public event OneArrowForwardClickHandler OneArrowForward; 

     private void button1_Click(object sender, EventArgs e) 
     { 
      OneArrowForward += new OneArrowForwardClickHandler(OneForward); 
     } 

     public void OneForward() 
     { 
      foreach (Object cs in checkedListBox1.CheckedItems) 
      { 
       if (!checkedListBox2.Items.Contains(cs)) 
        checkedListBox2.Items.Add(cs.ToString()); 
       else 
       { 
        MessageBox.Show("Item is already added"); 
        continue; 
       } 
      } 
     } 

     public delegate void TwoArrowForwardClickHandler(); 

     public event TwoArrowForwardClickHandler TwoArrowForward; 

     private void button2_Click(object sender, EventArgs e) 
     { 
      TwoArrowForward += new TwoArrowForwardClickHandler(TwoForward); 
     } 

     public void TwoForward() 
     { 
      foreach (Object cs in checkedListBox1.Items) 
      { 
       if (!checkedListBox2.Items.Contains(cs)) 
        checkedListBox2.Items.Add(cs.ToString()); 
       else 
        MessageBox.Show("Items were already added"); 
      } 
     } 

     public delegate void OneArrowBackwardClickHandler(); 

     public event OneArrowBackwardClickHandler OneArrowBackward; 

     private void button3_Click(object sender, EventArgs e) 
     { 
      OneArrowBackward += new OneArrowBackwardClickHandler(OneBackward); 

     } 

     public void OneBackward() 
     { 
      foreach (Object cs in checkedListBox1.CheckedItems) 
      { 
       checkedListBox2.Items.Remove(cs); 
      } 
     } 

     public delegate void TwoArrowBackwardClickHandler(); 

     public event TwoArrowBackwardClickHandler TwoArrowBackward; 

     private void button4_Click(object sender, EventArgs e) 
     { 
      TwoArrowBackward +=new TwoArrowBackwardClickHandler(TwoBackward); 
     } 

     public void TwoBackward() 
     { 
      foreach (Object cs in checkedListBox1.Items) 
      { 
       checkedListBox2.Items.Remove(cs); 
      } 

     } 

     private void button5_Click(object sender, EventArgs e) 
     { 
      string s = "The selected items are:"; 
      for (int i = 0; i < checkedListBox2.Items.Count - 1; i++) 
      { 
       s += checkedListBox2.CheckedItems[i].ToString() + "\n"; 
      } 
      MessageBox.Show(s); 
     } 

    } 
} 

注:>表示加检查的项目,意味着>>添加的所有项目,<手段删除选定的项目,< <手段删除所有项目

回答

2

在你的按钮单击事件您只需要添加一个事件处理程序的事件。你有没有试过直接调用函数?

而不是创建一个事件处理程序,调用每一个类似的功能,你将如何在下面从按钮1的单击事件调用OneForward()

private void button1_Click(object sender, EventArgs e) 
    { 
     OneForward(); 
    } 

回应置评

如果你的意思是您要通知父母您的按钮已被点击并且OneForward已完成,您可以在OneForward功能的末尾添加以下行:

OneArrowForward(this, new EventArgs()); 

但是,如果你想从父调用OneForward,你将不得不把它公开,然后从父您只需拨打:

myUserControlInstance.OneForward(); 
+0

嘿thanks.that完美工作,但如果我想使用什么他们与事件,因为它是控制库>? – Milee

+0

@Lily - 我已经更新了我的答案,以帮助您解决您的问题 – ThePower

相关问题