【问题标题】:How can i add checked items from one checklistbox to another checklistbox?如何将选中的项目从一个选中列表框添加到另一个选中列表框?
【发布时间】:2012-06-22 08:47:07
【问题描述】:

我需要将选中的项目从一个复选框添加到另一个。 我不应该在第二个复选框中多次添加一个项目。 该设计有两个复选框和以下按钮:>、>>、

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);
        }

    }
}

注意:>表示添加选中项,>>表示添加所有项,

【问题讨论】:

    标签: c# windows-forms-designer checklistbox control-library


    【解决方案1】:

    在您的按钮单击事件中,您只需将事件处理程序添加到事件中。你试过直接调用函数吗?

    不要创建事件处理程序,而是调用每个函数,类似于从 button1 的点击事件调用下面的 OneForward()

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

    对评论的回应

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

    OneArrowForward(this, new EventArgs());
    

    但是,如果您想从父级调用 OneForward,则必须将其公开,然后从父级调用:

    myUserControlInstance.OneForward();
    

    【讨论】:

    • 嘿,谢谢。效果很好,但是如果我想将它们与事件一起使用,因为它是控制库>?
    • @Lily - 我已经更新了我的答案来帮助你发表评论
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 2020-07-29
    • 2012-10-31
    • 1970-01-01
    相关资源
    最近更新 更多