ListBox显示最新数据、左移和右移操作

news2024/9/20 0:29:47

1、程序

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.ProgressBar;

namespace ListBoxApp
{
    public partial class Form1 : Form
    {
        Timer timer;
        bool isRun = false;
        int count = 0;
        int MAX_COUNT = 20;
        string filename = "";
        /// <summary>
        /// 构造函数
        /// </summary>
        public Form1()
        {
            InitializeComponent();
            MoveInitialize();
        }
        /// <summary>
        /// 窗体加载
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_Load(object sender, EventArgs e)
        {
            timer = new Timer();
            timer.Interval = 500;
            timer.Tick += Timer_Tick;
            timer.Start();
        }
        /// <summary>
        /// 定时处理
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Timer_Tick(object sender, EventArgs e)
        {
            if (isRun)
            {
                string str = $"No. {count} item";
                ListBoxSaveAndAdd(filename,listBox1, str, MAX_COUNT);
                count++;
            }
        }
        /// <summary>
        /// 测试开启和停止
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btStart_Click(object sender, EventArgs e)
        {
            if (btStart.Text.Equals("开始"))
            {
                btStart.Text = "停止";
                listBox1.Items.Clear();
                filename = Path.Combine(Environment.CurrentDirectory, "f"+DateTime.Now.ToString("yyyyMMdd_HHmmssFFF")+".txt");
                count = 0;
                isRun = true;
            }
            else
            {
                btStart.Text = "开始";
                isRun = false;
            }
        }

        #region 显示(最新数据)和保存
        /// <summary>
        /// 数据保存和ListBox添加
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="listBox"></param>
        /// <param name="text"></param>
        /// <param name="maxCount"></param>
        public static void ListBoxSaveAndAdd(string filename, ListBox listBox, string text, int maxCount)
        {
            FileStreamWriter(filename, text);
            ListBoxScrollAddCross(listBox, text, maxCount);
        }
        /// <summary>
        /// 文件保存
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="content"></param>
        public static void FileStreamWriter(string filename, string content)
        {
            using (StreamWriter sw = new StreamWriter(filename, true))
            {
                sw.WriteLine(content);
            }
        }
        /// <summary>
        /// listBox跨域处理
        /// </summary>
        /// <param name="listBox"></param>
        /// <param name="text"></param>
        /// <param name="maxCount"></param>
        public static void ListBoxScrollAddCross(ListBox listBox, string text, int maxCount)
        {
            if (listBox.InvokeRequired)
            {
                MethodInvoker mi = delegate ()
                {
                    ListBoxScrollAdd(listBox, text, maxCount);
                };
                listBox.Invoke(mi);
            }
            else
            {
                ListBoxScrollAdd(listBox, text, maxCount);
            }
        }
        /// <summary>
        /// listBox添加
        /// </summary>
        /// <param name="listBox"></param>
        /// <param name="text"></param>
        /// <param name="maxCount"></param>
        public static void ListBoxScrollAdd(ListBox listBox, string text, int maxCount)
        {
            listBox.Items.Add(text);
            if (listBox.Items.Count > maxCount)
            {
                listBox.Items.RemoveAt(0);
            }
            listBox.TopIndex = listBox.Items.Count - (int)(listBox.Height / listBox.ItemHeight);
        }
        #endregion

        #region 左移和右移
        /// <summary>
        /// 移动初始化
        /// </summary>
        private void MoveInitialize()
        {
            listBox2.Items.Add("产品设计");
            listBox2.Items.Add("硬件设计");
            listBox2.Items.Add("逻辑设计");
            listBox2.Items.Add("软件设计");
        }
        /// <summary>
        /// 右移
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnAddProject_Click(object sender, EventArgs e)
        {
            if (listBox2.Items.Count > 0)
            {
                CurrentMove(listBox2, listBox3);
            }
        }
        /// <summary>
        /// 左移
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BtnRemoveProject_Click(object sender, EventArgs e)
        {
            if (listBox3.Items.Count > 0)
            {
                CurrentMove(listBox3, listBox2);
            }     
        }
        /// <summary>
        /// 移动处理
        /// </summary>
        /// <param name="source"></param>
        /// <param name="target"></param>
        public void CurrentMove(ListBox source,ListBox target)
        {
            foreach(var selectItem in source.SelectedItems)
            {
                target.Items.Add((string)selectItem);
            }
            List<int> list = new List<int>();
            foreach(int item in source.SelectedIndices)
            {
                list.Add(item);
            }
            for(int i=list.Count-1; i>=0; i--)
            {
                source.Items.RemoveAt(list[i]);
            }
        }
        #endregion
    }
}

2、运行效果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2130986.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《餐饮世界》是什么级别的期刊?是正规期刊吗?能评职称吗?

​问题解答 问&#xff1a;《餐饮世界》是不是核心期刊&#xff1f; 答&#xff1a;不是&#xff0c;是知网收录的正规学术期刊。 问&#xff1a;《餐饮世界》级别&#xff1f; 答&#xff1a;国家级。主管单位&#xff1a; 中国商业联合会 主办单位&am…

b√最大矩阵和

题目描述 给定一个二维整数矩阵&#xff0c;要在这个矩阵中选出一个子矩阵. 使得这个子矩阵内所有的数字和尽量大&#xff0c;我们把这个子矩阵称为和最大子矩阵 子矩阵的选取原则是原矩阵中一块相互连续的矩形区域。 输入描述 输入的第一行包含2个整数n,m(1< n,m< 10…

Mysql连接不上的问题?

Mysql服务器本地能访问&#xff0c;但是外部连接报错如下&#xff1a;显然我也知道这就是一个权限问题&#xff0c;但是在网上百度的方法要么就是不生效&#xff0c;要么就是执行命令报错&#xff0c;很抓狂&#xff5e;这里提供精准的解决方案&#xff1a;SELECT User, Host F…

EV代码签名证书签名指南,签名要求、签名步骤一览

作为软件开发者&#xff0c;在软件分发之前&#xff0c;为软件应用程序进行代码签名&#xff0c;可标识开发者身份&#xff0c;消除“未知发布者”警告&#xff0c;确保代码完整性&#xff0c;有利于应用程序安全分发&#xff0c;也可以让用户放心下载。而为软件应用程序进行代…

【C语言从不挂科到高绩点】17-C语言中的宏定义

Hello&#xff01;彦祖们&#xff0c;俺又回来了&#xff01;&#xff01;&#xff01;&#xff0c;继续给大家分享 《C语言从不挂科到高绩点》课程!! 本节将为大家讲解C语言中的函数&#xff1a; 本套课程将会从0基础讲解C语言核心技术&#xff0c;适合人群&#xff1a; 大学…

取消Cursor的注释斜体字风格

1. 打开settings.json 2. 添加如下代码 "editor.tokenColorCustomizations": {"textMateRules": [{"name": "Comment","scope": ["comment","comment.block","comment.block.documentation"…

Vert.x HttpClient调用后端服务时使用Idle Timeout和KeepAlive Timeout的行为分析

其实网上有大量讨论HTTP长连接的文章&#xff0c;而且Idle Timeout和KeepAlive Timeout都是HTTP协议上的事情&#xff0c;跟Vert.x本身没有太大关系&#xff0c;只不过最近在项目上遇到了一些问题&#xff0c;用到了Vert.x的HttpClient&#xff0c;就干脆总结一下&#xff0c;留…

从Apple Intelligence到IoT Intelligence,端侧生成式AI时代加速到来

9月10日凌晨1点&#xff0c;苹果新品发布会如期举行&#xff0c;全新iPhone16系列成为苹果生态中真正意义上的第一款原生AI手机&#xff0c;在第二代3nm工艺A18和A18 Pro芯片的加持下&#xff0c;iPhone16系列能够容纳并快速运行以Apple Intelligence为中心的生成式AI功能在手机…

铭顺元宇宙时代到来,数字人应用案例分享

近年来&#xff0c;随着技术的不断发展&#xff0c;数字人的功能和表现力也在不断提升&#xff0c;形形色色的虚拟数字人正代替真人&#xff0c;扮演着代言人、主播、客服和智能助理的角色&#xff0c;涉及文旅、电商、金融等多个行业。作为随着AI技术在数字人产业中的发展&…

远程桌面内网穿透是什么?有什么作用?

远程桌面内网穿透指的是通过特定技术手段&#xff0c;将处于内网中的电脑或服务器&#xff0c;通过外部网络&#xff08;互联网&#xff09;进行访问。内网穿透的主要作用是解决在内网环境下&#xff0c;远程设备与外部互联网之间的连接问题&#xff0c;允许用户从外部访问内网…

硬核,这款小而美的国产操作系统开源了!(带私活源码)

今天给大家介绍的是硬核的国产物联网操作系统 RT-Thread&#xff0c;内容很硬核&#xff0c;可以让大家捡起一些大学期间学到的知识&#xff0c;也能让自己对于操作系统有更多的理解。 项目介绍 RT-Thread 诞生于 2006 年&#xff0c;是一款以开源的物联网操作系统。主要采用…

07 vue3之组件及生命周期

组件基础 每一个.vue 文件呢都可以充当组件来使用 每一个组件都可以复用 组件的生命周期 简单来说就是一个组件从创建 到 销毁的 过程 成为生命周期 在我们使用Vue3 组合式API 是没有 beforeCreate 和 created 这两个生命周期的 onBeforeMount() 在组件DOM实际渲染安装之前…

一个未解决的漏洞:actuator字符绕过漏洞

最近遇到了安全部门派发的actuator泄漏漏洞&#xff0c;领导希望不暴露到外网上&#xff0c;对于内网需要认证才可以访问。 要想不暴露到外网上&#xff0c;就需要在网络层面做拦截&#xff0c;比如nginx和apisix上做代理配置。 一般的情况都可以应对&#xff0c;就是对于http…

CentOS镜像源更新

如果 CentOS 7.9 的官方镜像源已不维护&#xff0c;你可以使用以下方法更新&#xff1a; 切换到其他镜像源&#xff1a;使用 CentOS 镜像站点或第三方镜像源&#xff0c;如 EPEL&#xff08;Extra Packages for Enterprise Linux&#xff09;。修改 /etc/yum.repos.d/CentOS-Ba…

Web大学生网页作业成品——动漫火影忍者网页设计与实现(HTML+CSS+JS)(5个页面)

&#x1f389;&#x1f389;&#x1f389; 常见网页设计作业题材有**汽车、环保、明星、文化、国家、抗疫、景点、人物、体育、植物、公益、图书、节日、游戏、商城、旅游、家乡、学校、电影、动漫、非遗、动物、个人、企业、美食、婚纱、其他**等网页设计题目, 可满足大学生网…

终于有一本书把大模型背后的Transformer模型究竟是什么一次性说清楚了!

前言 ChatGPT红得发紫&#xff0c;强得让人类心悸。但在它的背后&#xff0c;还隐藏着一位真正的大佬。它的名字叫做——Transformer! 这本书全面介绍了最新的Transformer模型在自然语言处理中的应用方法和技巧&#xff0c;包括原理、实现方法和各种任务的应用&#xff0c;提供…

WebSocket和HTTP协议有什么区别

WebSocket 支持端对端通信可由client发起&#xff0c;也可由sever发起用于消息通知、直播间讨论区、聊天室、协同编辑 WebSocket连接过程 先发起一个HTTP请求成功之后在升级到WebSocket协议&#xff0c;再通讯 WebSocket和HTTP区别 WebSocket协议名是ws://&#xff0c;可双…

C语言存储类型 auto,register,static,extern

目录 1. auto 存储类型 1.1 自动变量特性 1.2 举例 2. register 存储类型 2.1 寄存器变量特性 2.2 举例 3. extern 存储类型 3.1 extern 存储类型特性 3.2 举例 3.2.1 extern全局变量 ​编辑 3.2.2 extern函数 4. static 存储类型 4.1 static 存储类型特性 4.2 举…

克雷格·费德里吉谈Apple Intelligence保密技术背后的挑战

苹果必须实现克雷格-费德里吉所说的突破&#xff0c;这样 Apple Intelligence公司才能在云中使用大型语言模型&#xff0c;同时还能保护用户隐私&#xff0c;苹果是这样做的。在"It’s Glowtime"活动中&#xff0c;苹果公司谈到了私有云计算作为保护用户隐私的方式。…

Java发邮件:如何配置SMTP服务器实现发信?

Java发邮件功能实现的教程&#xff1f;Java发邮件的方式有哪些&#xff1f; 无论是用于用户注册确认、密码重置&#xff0c;还是系统通知&#xff0c;Java发邮件都是不可或缺的一部分。AokSend将详细介绍如何配置SMTP服务器&#xff0c;以便在Java发邮件时能够顺利发送邮件。 …