同样先来效果图:
主要代码如下:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ComboListBox
{
public partial class Form1 : Form
{
public Form1( )
{
InitializeComponent( );
}
private void Form1_Load(object sender, EventArgs e)
{
//设置cmbHouXuan只能从ComboBox中的已有候选值选择
this.cmbHouXuan.DropDownStyle = ComboBoxStyle.DropDownList;
//lstResult只能执行单选,并且对所有值进行排序
this.lstResults.SelectionMode = SelectionMode.One;
this.lstResults.Sorted = true;
this.GenerateCombItems( ); //产生ComboBox中的可选项
}
private void GenerateCombItems( )
{
this.cmbHouXuan.Items.Clear( ); //移除原有的数据
Random rd = new Random();
for (int i = 0; i < 10; i++) //随机生成10个新的数据
{
string item = string.Format("Item-{0:X8}", rd.Next( ));
this.cmbHouXuan.Items.Add(item); //添加到ComboBox中
}
this.cmbHouXuan.SelectedIndex = 0; //默认选中第一条
}
//重新生成ComboBox中的侯选项
private void btnFresh_Click(object sender, EventArgs e)
{
this.GenerateCombItems( ); //重新生成CombBox中的候选项
}
//将CombBox中选中的值添加到ListBox中
private void btnAddOne_Click(object sender, EventArgs e)
{
//通过ComboBox.SelectedItem获取当前选中的候选项,然后添加到ListBox中
string item = (string)this.cmbHouXuan.SelectedItem;
this.lstResults.Items.Add(item);
}
//从ListBox中移除当前选中项
private void btnRemoveOne_Click(object sender, EventArgs e)
{
if (this.lstResults.SelectedIndex >= 0) //如果当前ListBox中有选中条目,移除它
{
this.lstResults.Items.RemoveAt(this.lstResults.SelectedIndex);
}
}
//从ListBox中移除所有项
private void btnRemovAl