02 · 如何在C#程序开发中实现穿梭功能

1、先在窗体中画两个listbox空间,一个是获取数据库文件用(listbox1),另一个是保存从listbox1穿梭的数据;
绿色button按钮是从左到右穿梭;红色button按钮是从右到左穿梭。
label1是从左到右穿梭内容;label2是从右到左穿梭内容。
在这里插入图片描述
2、listbox1加载数据库数据,具体操作:listBox加载SQL Server数据库资料
3、声明两个字符串变量:

string SeleDefaceFromLB1; //从左到右穿梭变量
string SeleDefaceFromLB2; //从右到左穿梭变量

4、左侧listbox的双击选择事件:

private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
{
    if(listBox1.SelectedItems.Count == 0) // 判断双击是否为空,如为空返回
    {
        return;
    }
    SeleDefaceFromLB1 = listBox1.SelectedItem.ToString(); // 将listBox1选中的组传输给SeleDefaceFromLB1
    label1.Text = SeleDefaceFromLB1; // 更改label1的名称
}

5、绿色按钮,从左到右穿梭事件:

private void btn_Add_Project_Click(object sender, EventArgs e)
{
    listBox1.Items.Remove(SeleDefaceFromLB1); // 将listbox1选中的项目移出
    List<string> list = listBox2.Items.Cast<string>().Select(p => p.ToString()).ToList();  
    if(list.Count == 1)
    {
        if(list[0] == "")
        {
            list.Clear();
        }
    }
    list.Add(SeleDefaceFromLB1); // 添加listbox1移出的项目
    UpdateListBoxFromList(listBox2, list); // 更新listbox2列表
    label1.Text = ""; // 清空label1的文字内容
    SeleDefaceFromLB1 = ""; // 清空SeleDefaceFromLB1的选项内容
}

以上便可实现从左到右的穿梭功能,从右到左的穿梭功能同理:

private void listBox2_MouseDoubleClick(object sender, MouseEventArgs e)
{
    if (listBox2.SelectedItems.Count == 0) // 判断双击是否为空,如为空返回
    {
        return;
    }
    SeleDefaceFromLB2 = listBox2.SelectedItem.ToString(); // 将listBox2选中的组传输给SeleDefaceFromLB2
    label2.Text = SeleDefaceFromLB2; // 更改label2的名称
}
private void btn_Delete_Project_Click(object sender, EventArgs e)
{
    listBox2.Items.Remove(SeleDefaceFromLB2);
    List<string> list = listBox1.Items.Cast<string>().Select(p => p.ToString()).ToList();
    if (list.Count == 1)
    {
        if (list[0] == "")
        {
            list.Clear();
        }
    }
    list.Add(SeleDefaceFromLB2);
    UpdateListBoxFromList(listBox1, list);
    label2.Text = "";
    SeleDefaceFromLB2 = "";
}

完整程序如下:
(不包含数据库加载部分)

string SeleDefaceFromLB1; //从左到右穿梭变量
string SeleDefaceFromLB2; //从右到左穿梭变量
 /// <summary>
 /// ListBox1双击事件
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void listBox1_MouseDoubleClick(object sender, MouseEventArgs e)
 {
     if(listBox1.SelectedItems.Count == 0) // 判断双击是否为空,如为空返回
     {
         return;
     }
     SeleDefaceFromLB1 = listBox1.SelectedItem.ToString(); // 将listBox1选中的组传输给SeleDefaceFromLB1
     label1.Text = SeleDefaceFromLB1; // 更改label1的名称
 }

 private void listBox2_MouseDoubleClick(object sender, MouseEventArgs e)
 {
     if (listBox2.SelectedItems.Count == 0) // 判断双击是否为空,如为空返回
     {
         return;
     }
     SeleDefaceFromLB2 = listBox2.SelectedItem.ToString(); // 将listBox2选中的组传输给SeleDefaceFromLB2
     label2.Text = SeleDefaceFromLB2; // 更改label2的名称
 }
 /// <summary>
 /// 从左到右穿梭
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btn_Add_Project_Click(object sender, EventArgs e)
 {
     listBox1.Items.Remove(SeleDefaceFromLB1); // 将listbox1选中的项目移出
     List<string> list = listBox2.Items.Cast<string>().Select(p => p.ToString()).ToList();  
     if(list.Count == 1)
     {
         if(list[0] == "")
         {
             list.Clear();
         }
     }
     list.Add(SeleDefaceFromLB1); // 添加listbox1移出的项目
     UpdateListBoxFromList(listBox2, list); // 更新listbox2列表
     label1.Text = ""; // 清空label1的文字内容
     SeleDefaceFromLB1 = ""; // 清空SeleDefaceFromLB1的选项内容
 }
 /// <summary>
 /// 从右到左穿梭
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void btn_Delete_Project_Click(object sender, EventArgs e)
 {
     listBox2.Items.Remove(SeleDefaceFromLB2);
     List<string> list = listBox1.Items.Cast<string>().Select(p => p.ToString()).ToList();
     if (list.Count == 1)
     {
         if (list[0] == "")
         {
             list.Clear();
         }
     }
     list.Add(SeleDefaceFromLB2);
     UpdateListBoxFromList(listBox1, list);
     label2.Text = "";
     SeleDefaceFromLB2 = "";
 }
 /// <summary>
 /// 更新ListBox
 /// </summary>
 /// <param name="box"></param>
 /// <param name="list"></param>
 private void UpdateListBoxFromList(ListBox box, List<string> list)
 {
     var listNew = list.OrderBy(x => x).ToList();//按照拼音排序
     box.Items.Clear();
     for (int i = 0; i < listNew.Count; i++)
     {
         box.Items.Add(listNew[i]);
     }
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

༺Aslan༻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值