C#根据数据量自动排版标签的样例

在这里插入图片描述
这是一个C#根据数据量自动排版标签的样例

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using HslCommunication.Profinet;

namespace WindowsFormsApp1
{
    public partial class Form1 : Form
    {
        private CancellationTokenSource _cancellationTokenSource;
        private Dictionary<string, string> fieldMappings;

        public Form1()
        {
            InitializeComponent();
            InitializeFieldMappings();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void InitializeFieldMappings()
        {
            fieldMappings = new Dictionary<string, string>
            {
                { "pltid", "平台ID" },
                { "basketcode", "篮子编码" },
                { "code", "编码" },
                { "productCode", "产品编码" },
                { "productName", "产品名称" },
                { "customerCode", "客户编码" },
                { "customerName", "客户名称" },
                { "workordernumber", "工单编号" },
                { "way", "方式" },
                { "matnr", "物料编码" },
                { "specs", "规格" },
                { "dimension", "尺寸" },
                { "equipmentnum", "设备编号" },
                { "djBusCode", "业务代码" },
                { "degEmCode", "异常代码" },
                { "fqty", "数量" },
                { "dinsert", "插入时间" },
                { "lkstatus", "锁定状态" },
                { "viewstatus", "查看状态" },
                { "mst", "主状态" },
                { "change_time", "变更时间" },
                { "lgid", "lg的编号" },
                { "lgmsg", "lg的信息" },
                { "lgtime", "lg的时间" }
            };
        }

        private async void button1_Click(object sender, EventArgs e)
        {
            _cancellationTokenSource = new CancellationTokenSource();
            string connectionString = "Server=ip;Database=root;User Id=1;Password=1;";
            string query = "SELECT * FROM [1].[1] where viewstatus=1";

            bool isConnected = await Task.Run(() => TestDatabaseConnection(connectionString));
            if (isConnected)
            {
                textBox2.BackColor = Color.Green;
                label1.Text = "已连接";
                await Task.Run(() => MonitorDatabase(connectionString, query, _cancellationTokenSource.Token));
            }
            else
            {
                textBox2.BackColor = Color.Red;
                label1.Text = "连接失败";
            }
        }

        private bool TestDatabaseConnection(string connectionString)
        {
            try
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    connection.Open();
                    return true;
                }
            }
            catch
            {
                return false;
            }
        }

        private void MonitorDatabase(string connectionString, string query, CancellationToken token)
        {
            DateTime lastCheck = DateTime.Now;

            while (!token.IsCancellationRequested)
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    SqlCommand command = new SqlCommand(query, connection);
                    command.Parameters.AddWithValue("@lastCheck", lastCheck);

                    try
                    {
                        connection.Open();
                        SqlDataReader reader = command.ExecuteReader();

                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                                StringBuilder result = new StringBuilder();
                                for (int i = 0; i < reader.FieldCount; i++)
                                {
                                    string fieldName = reader.GetName(i);
                                    string fieldValue = reader[i].ToString();
                                    if (fieldMappings.ContainsKey(fieldName))
                                    {
                                        result.AppendLine($"{fieldMappings[fieldName]}: {fieldValue}");
                                    }
                                    else
                                    {
                                        result.AppendLine($"{fieldName}: {fieldValue}");
                                    }
                                }
                                UpdateUIWithResult(result.ToString(), reader);
                            }

                            lastCheck = DateTime.Now;
                        }
                        reader.Close();
                    }
                    catch (Exception ex)
                    {
                        UpdateUIWithResult("Error: " + ex.Message, null);
                    }
                }

                Thread.Sleep(1000); // 1 second interval
            }
        }

        private void UpdateUIWithResult(string text, SqlDataReader reader)
        {
            if (InvokeRequired)
            {
                Invoke(new Action(() => CreateLabelsForData(reader)));
            }
            else
            {
                CreateLabelsForData(reader);
            }
        }

        private void CreateLabelsForData(SqlDataReader reader)
        {
            flowLayoutPanel1.Controls.Clear(); // 清空之前的控件
            int yOffset = 0; // 纵向偏移量

            for (int i = 0; i < reader.FieldCount; i++)
            {
                string fieldName = reader.GetName(i);
                string fieldValue = reader[i].ToString();

                // 创建标题标签
                Label titleLabel = new Label
                {
                    AutoSize = false,
                    Width = 200,
                    Height = 40,
                    Location = new Point(0, yOffset),
                    ForeColor = Color.Red,
                    BackColor = Color.Black,
                    Padding = new Padding(5),
                    Font = new Font("Arial", 18, FontStyle.Bold),
                    Text = fieldMappings.ContainsKey(fieldName) ? fieldMappings[fieldName] : fieldName
                };

                // 创建内容标签
                Label valueLabel = new Label
                {
                    AutoSize = false,
                    Width = 200,
                    Height = 40,
                    Location = new Point(210, yOffset),
                    ForeColor = Color.Green,
                    BackColor = Color.Black,
                    Padding = new Padding(5),
                    Font = new Font("Arial", 18, FontStyle.Regular),
                    Text = fieldValue
                };

                // 将标题和内容标签添加到Panel
                flowLayoutPanel1.Controls.Add(titleLabel);
                flowLayoutPanel1.Controls.Add(valueLabel);

                yOffset += 50; // 更新纵向偏移量
            }
        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            _cancellationTokenSource?.Cancel();
        }

        private void label1_Click(object sender, EventArgs e)
        {

        }

        private void label2_Click(object sender, EventArgs e)
        {

        }

        private void button5_Click(object sender, EventArgs e)
        {
            _cancellationTokenSource?.Cancel();
            textBox2.BackColor = Color.WhiteSmoke; // 或者其他颜色表示断开连接
            label1.Text = "未连接";
        }
        private void flowLayoutPanel1_Paint(object sender, PaintEventArgs e)
        {
            
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[C][符号]详细讲解

目录 1.算术操作符2.接续符和转义符 \1.续行符使用2.转义 3.单引号和双引号4.逻辑运算符5.位运算符6.移位操作符7. --操作8.条件操作符9.逗号表达式10.操作符的属性 1.算术操作符 算术操作符&#xff1a; - * / %除了%操作符以外&#xff0c;其他的几个操作符可以作用于整数和…

永久免费SSL证书领取流程

一、SSL证书的前世今生 起源&#xff1a; SSL证书起源于1994年&#xff0c;当时网景公司&#xff08;Netscape&#xff09;推出了安全套接字层&#xff08;SSL&#xff0c;Secure Sockets Layer&#xff09;协议&#xff0c;这是一种加密通信协议&#xff0c;用于在客户端和服…

【软考】系统架构师知识点

目录 环路复杂度McCabe软件工具分类需求分类软件测试中间件分类等保&#xff08;信息安全等级保护&#xff09;数据流图DFD微内核架构信息系统生命周期区块链MDA模型驱动架构EJBSOA微服务REST五大原则管道过滤器 VS 仓库风格虚拟机风格质量属性 & 非功能性需求敏感点、权衡…

“2024深圳数字能源展”共同探讨数字能源未来发展方向和挑战

在数字化浪潮的推动下&#xff0c;新一轮科技革命与产业革命正以前所未有的速度加速兴起。在这个时代背景下&#xff0c;数字化技术与能源行业的高度融合&#xff0c;使得能源数字化成为未来发展的必然趋势。数字经济浪潮的蓬勃兴起&#xff0c;为能源行业的数字化转型提供了强…

JAVA面试题大全(十八)

1、说一下 jvm 的主要组成部分&#xff1f;及其作用&#xff1f; 类加载器&#xff08;ClassLoader&#xff09;运行时数据区&#xff08;Runtime Data Area&#xff09;执行引擎&#xff08;Execution Engine&#xff09;本地库接口&#xff08;Native Interface&#xff09;…

【微服务】安装docker以及可视化界面

1.配置yum下载源为aliyun源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo2.下载docker不加版本号默认为最新版本 yum install -y docker-ce3.启动以及开机自启 #启动docker命令 systemctl start docker #设置开机自启命令…

免费,Python蓝桥杯等级考试真题--第16级(含答案解析和代码)

Python蓝桥杯等级考试真题–第16级 一、 选择题 答案&#xff1a;B 解析&#xff1a;&#xff08;75&#xff09;//212//26&#xff0c;故答案为B。 答案&#xff1a;B 解析&#xff1a;因为x15&#xff0c;所以range&#xff08;2,15&#xff09;&#xff0c;i的取值为2-14&a…

【机器学习】Pandas中to_pickle()函数的介绍与机器学习中的应用

【机器学习】Pandas中to_pickle()函数的介绍和机器学习中的应用 &#x1f308; 欢迎莅临我的个人主页&#x1f448;这里是我深耕Python编程、机器学习和自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;并乐于分享知识与经验的小天地&#xff01;&#x1f387; &#…

离线deb安装下载及安装实例

1、使用apt download下载deb安装包(不包括依赖包) 1.1仅下载deb安装包 sudo apt download lrzsz 1.2安装载deb安装包 sudo dpkg -i lrzsz_0.12.21-10kylin0k2_arm64.deb 注&#xff1a;dpkg安装deb包&#xff0c;部分存在depends关系&#xff0c;需要使用apt-get -f instal…

Meterpreter工具使用

Meterpreter属于stage payload&#xff0c;在Metasploit Framework中&#xff0c;Meterpreter是一种后渗透工具&#xff0c;它 属于一种在运行过程中可通过网络进行功能扩展的动态可扩展型Payload。这种工具是基于“内存DLL注 入”理念实现的&#xff0c;它能够通过创建一个新进…

项目管理-风险管理

目录 一、概述 二、风险管理的概念 2.1 概述 2.2 风险的定义 2.3 风险的特点 2.3.1 概述 2.3.2 风险承受能力影响因素 2.3.3 风险特点 三、风险的类型 四、风险的管理过程 4.1 概述 4.2 风险管理计划 4.3 风险识别 4.4 风险定性分析 4.5 风险定量分析 4.6 风险应…

【PHP项目实战训练】——laravel框架的实战项目中mysql数据库的数据的数据在blade.php中展示

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;开发者-曼亿点 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 曼亿点 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a…

thingsboard接入臻识道闸

thingsboard 和tb-gateway 是通过源码idea启动测试开发 为了测试这里只是买了臻识道闸的摄像机模组方便调试,然后添加一个开关量开关模拟雷达 道闸品牌 臻识C3R3C5R5变焦500万车牌识别相机高速追逃费相机华厦V86像机 淘宝地址 https://item.taobao.com/item.htm?_us1thkikq4…

回顾java-异常

异常 &#xff1a;指的是程序在执行过程中&#xff0c;出现的非正常的情况&#xff0c;最终会导致JVM的非正常停止。 在Java等面向对象的编程语言中&#xff0c;异常本身是一个类&#xff0c;产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。 需…

python探索图表配置的深度与广度

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、基础配置&#xff1a;从全局到细节 示例&#xff1a;颜色与边界的设置 二、文本与标签…

【跟着例子学MySQL】SQL进阶 – 视图、事务和变量

文章目录 前言回顾视图事务用户变量未完待续 前言 举例子&#xff0c;是最简单有效的学习方法。本系列文章以一个贯穿始终的场景&#xff0c;结合多个实例讲解MySQL的基本用法。 ❔ 为什么要写这个系列&#xff1f; 模仿是最好的老师&#xff0c;实践是检验成果的方法。本系列…

基于VMware安装Linux虚拟机

1.准备Linux环境 首先&#xff0c;我们要准备一个Linux的系统&#xff0c;成本最低的方式就是在本地安装一台虚拟机。为了统一学习环境&#xff0c;不管是使用MacOS还是Windows系统的同学&#xff0c;都建议安装一台虚拟机。 windows采用VMware&#xff0c;Mac则采用Fusion …

视频集中存储LntonCVS视频监控汇聚平台智慧园区应用方案

智慧园区&#xff0c;作为现代化城市发展的重要组成部分&#xff0c;承载着产业升级的使命&#xff0c;是智慧城市建设的重要体现。在当前产业园区竞争日益激烈的情况下&#xff0c;越来越多的用户关注如何将项目打造成完善的智慧园区。 在智慧园区的建设过程中&#xff0c;各类…

PDF打印技巧:如何跳过不需要的页面?如何关闭打印权限?

作为打工人&#xff0c;经常需要打印各种文档&#xff0c;比如PDF文件。今天分享一下PDF文件的两个打印技巧&#xff0c;如果你还不知道&#xff0c;就一起来看看吧&#xff01; 技巧1&#xff1a;打印PDF如何跳过不需要的页面 有时候&#xff0c;一个PDF文件有很多页&#xf…

Golang | Leetcode Golang题解之第112题路径总和

题目&#xff1a; 题解&#xff1a; func hasPathSum(root *TreeNode, sum int) bool {if root nil {return false}if root.Left nil && root.Right nil {return sum root.Val}return hasPathSum(root.Left, sum - root.Val) || hasPathSum(root.Right, sum - roo…