【问题标题】:Transfer listBox item to another listBox (Winforms C#)将 listBox 项转移到另一个 listBox (Winforms C#)
【发布时间】:2011-08-22 04:05:12
【问题描述】:

我有两个列表框。第一个列表框包含交通违规列表。当您单击添加按钮并执行代码时,listbox2 得到了此项目“ListBoxTest.Violation”,而不是从 listBox1 显示的项目...

我的代码有什么问题?

namespace ListBoxTest
{
    /// <summary>
    /// Description of MainForm.
    /// </summary>
    public partial class MainForm : Form
    {
        private List<Violation> violationList = new List<Violation>();
        public MainForm()
        {
            InitializeComponent();
        }

        void MainFormLoad(object sender, EventArgs e)
        {
            LoadViolations(); // Initialize and add violations to violationList.
            listBox1.DataSource = violationList; // Set the DataSource property.
            listBox1.ValueMember = "Code";
            listBox1.DisplayMember = "Description";

        }

        void LoadViolations()
        {
            Violation violation;

            violation = new Violation("001", "Beating the red light");
            violationList.Add(violation);

            violation = new Violation("002", "Exceeding posted speed limit on the road");
            violationList.Add(violation);

            violation = new Violation("003", "Driving a vehicle without license to drive");
            violationList.Add(violation);

            violation = new Violation("004", "Driving a non registered vehicle");       
            violationList.Add(violation);

            violation = new Violation("005", "Vehicle has no plate number");
            violationList.Add(violation);
        }

        void BtnAddClick(object sender, EventArgs e)
        {
            listBox2.Items.Add(listBox1.SelectedItem); // Add item from listBox1 to listBox2;
        }
    }

    /// <summary>
    /// Violation Class
    /// Properties: Code, Description
    /// </summary>
    public class Violation
    {
        private string _code;
        private string _description;

        public Violation(string code, string description)
        {
            _code = code;
            _description = description;
        }

        public String Code
        {
            get { return _code; }
            set { _code = value; }
        }

        public String Description
        {
            get { return _description; }
            set { _description = value; }
        }
    }
}

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    类型将所选项目强制转换为违规。这应该可以解决问题。 编辑:我已经修改了代码来解决这个问题。

    private void AddClick(object sender, EventArgs e)
    {
        // Set the DataSource property.          
        listBox2.ValueMember = "Code";
        listBox2.DisplayMember = "Description";    
        listBox2.Items.Add((Violation)listBox1.SelectedItem); 
    }    
    

    【讨论】:

      【解决方案2】:

      确保listbox2listbox1 具有相同的设置,例如listbox2.ValueMember, listbox2.DisplayMember..

      【讨论】:

      • 可以接受你的答案一半,另一半接受 Splendor> :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多