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

news2024/11/25 14:39:39

在这里插入图片描述
这是一个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)
        {
            
        }
    }
}

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

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

相关文章

Java基础:基本语法(一)

Java基础&#xff1a;基本语法&#xff08;一&#xff09; 文章目录 Java基础&#xff1a;基本语法&#xff08;一&#xff09;1. 前言2. 开发环境搭建2.1 Java开发工具包下载2.2 环境变量配置2.3 Java程序的运行过程 3. 数据类型3.1 基本数据类型3.2 引用数据类型 4. 常量与变…

深度学习中文笔记.pdf

深度学习和机器学习应该如何入门呢&#xff1f;这是很多初学者经常提的问题&#xff0c;针对这个问题&#xff0c;相信很多过来人都会推荐吴恩达的在线课程。不过&#xff0c;由于是英文版本&#xff0c;就将很多人挡在了门外。 于是&#xff0c;在国内&#xff0c;以黄海广博士…

发现一个可以白嫖GPU的平台

网址 https://platform.virtaicloud.com/gemini_web/auth/register?inviteCodeb0322161368ead7f49716688486796dd 驱动云注册有100点的算力点&#xff0c;目前最便宜的机器大概是0.49算力点每小时&#xff0c;安装个sd或者简单学习训练数据的话&#xff0c;应该能用挺久的。…

K8s 小白入门|从电影配乐谈起,聊聊容器编排和 K8s

来听听音乐 电影&#xff0c;是我们生活中的重要调味剂。 配乐&#xff0c;是电影中不可或缺的一部分。 有的时候&#xff0c;配乐可以跟剧情共振&#xff0c;让你按捺不住自己的情绪&#xff0c;或眼含热泪、或慷慨激昂、或人仰马翻、或怅然若失&#xff1b; 有的时候&…

探索研究大语言在生物识别技术——使用ChatGP-4从完成从人脸识别到年龄估计

0.引言 论文提出以下几要点&#xff1a; &#xff08;1&#xff09;. 人脸识别、性别检测和年龄估计的性能评估&#xff1a; 进行了一项研究&#xff0c;使用GPT-4这样的大型语言模型来处理人脸识别、性别检测和年龄估计等任务。这些任务是生物识别技术中的常见应用&#xff…

深入分析 Android Activity (十)

文章目录 深入分析 Android Activity (十)1. Activity 的资源管理1.1 使用资源 ID 访问资源1.2 Drawable 资源1.3 使用 TypedArray 管理资源1.4 使用资源配置 2. Activity 的数据存储2.1 SharedPreferences2.2 文件存储2.3 SQLite 数据库2.4 ContentProvider 3. Activity 的性能…

生产者延迟消息和重试机制

messageDelayLevel1s 5s 10s 30s 1m 2m 3m 4m 5m 6m 7m 8m 9m 10m 20m 30m 1h 2h 延迟消息级别public PutMessageResult putMessage(final MessageExtBrokerInner msg) {//事务消息处理if (tranType MessageSysFlag.TRANSACTION_NOT_TYPE|| tranType MessageSysFlag.TRANSACT…

基于高光谱数据集的创新点实现-高斯核函数卷积神经网络

一、高光谱数据集简介 1.1 数据集简介 数据集链接在这:高光谱数据集(.mat.csv)-科研学术 数据集包含下面三个文件&#xff1a; 文件中包含.mat与.csv,145x145x220, 其实主要使用avirissub.csv文件&#xff0c;在代码上只是将mat文件转成了csv文件。具体avirissub.csv如下&am…

算法学习笔记(7.1)-贪心算法(分数背包问题)

##问题描述 给定 &#x1d45b; 个物品&#xff0c;第 &#x1d456; 个物品的重量为 &#x1d464;&#x1d454;&#x1d461;[&#x1d456;−1]、价值为 &#x1d463;&#x1d44e;&#x1d459;[&#x1d456;−1] &#xff0c;和一个容量为 &#x1d450;&#x1d44e;&…

【kubernetes】关于k8s集群如何将pod调度到指定node节点(亲和与反亲和等)

目录 一、调度约束 1.1K8S的 List-Watch 机制 ⭐⭐⭐⭐⭐ 1.1.1Pod 启动典型创建过程 二、调度过程 2.1Predicate&#xff08;预选策略&#xff09; 常见的算法 2.2priorities&#xff08;优选策略&#xff09;常见的算法 三、k8s将pod调度到指定node的方法 3.1指定…

白酒:传统产区的创新之路与品牌重塑

云仓酒庄豪迈白酒作为传统产区的品牌&#xff0c;面临着市场需求的不断变化和消费者口味的多样化。为了保持品牌竞争力和市场地位&#xff0c;传统产区需要不断创新和重塑品牌形象&#xff0c;以满足消费者的需求和期望。 首先&#xff0c;传统产区需要注重产品的品质和口感。品…

Owinps静态IP代理:跨境电商的优选解决方案

在快速发展的电子商务领域&#xff0c;尤其是跨境电商行业&#xff0c;网络的稳定性和安全性是成功经营的关键因素之一。在这背后&#xff0c;少不得一个重要的跨境电商工具——代理IP&#xff0c;而这其中&#xff0c;静态IP因其独特的稳定性和安全性&#xff0c;正逐渐成为众…

IC开发——Ubuntu安装VCS2018

1. 简介 VCS是一种常用的Verilog仿真和综合工具&#xff0c;由Synopsys公司开发。它提供了一个完整的设计验证环境&#xff0c;用于验证硬件设计的正确性和性能。以下是VCS工具的一些主要特点和功能&#xff1a; 仿真功能&#xff1a;VCS支持基于事件驱动的数字电路级仿真&am…

MySQL学习——连接服务器和输入查询

MySQL是一个流行的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;由瑞典的MySQL AB公司开发&#xff0c;后来被Oracle公司收购。它使用SQL&#xff08;结构化查询语言&#xff09;作为访问和操作数据库的标准语言。 要查看 mysql 客户端程序提供的选项列表&a…

合约的值类型

基本数据类型&#xff1a;整数、枚举、布尔&#xff08;类似java的数据类型&#xff09;Address、Contract&#xff08;这两种是solidity特有的数据类型&#xff09;Fixed byte array&#xff08;定长字节数组&#xff09; Integer(int/uint) int/uint 以8位字节递增&#xf…

硬盘有EFI分区格式化不了,也删不了怎么办,不能读取磁盘

问题&#xff1a;EFI为系统引导分区表明这是一块系统盘&#xff0c;常规操作无法格式化也无法删除&#xff0c;也不能读取 解决&#xff1a; 1.管理员运行cmd 2.输入diskpart 3.输入list disk 查看系统磁盘&#xff0c;并找到你格式化不了的那块磁盘 4.select disk 编号 选择…

【Go专家编程——并发控制——三剑客】

并发控制 我们考虑这么一种场景&#xff0c;协程在A执行过程中需要创建子协程A1、A2、A3…An&#xff0c;协程创建完子协程后就等待子协程退出。 针对这种场景&#xff0c;Go提供了三种解决方案&#xff1a; Channel&#xff1a;使用channel控制子协程 优点&#xff1a;实现…

【稳定检索】2024年核能科学与材料、物理应用国际会议(NESMPA 2024)

2024年核能科学与材料、物理应用国际会议 2024 International Conference on Nuclear Energy Science and Materials, Physical Applications 【1】会议简介 2024年核能科学与材料、物理应用国际会议即将拉开帷幕&#xff0c;这是一场汇聚全球核能科学、材料研究及物理应用领域…

全志T527 适配双目tp2815_mipi

一、硬件信息 TP2815&#xff1a; 确认硬件信息&#xff1a; 1、通信接口&#xff1a;TWI2总线&#xff0c;引脚组为PE1 、PE2 2、RESET脚&#xff1a; 二、软件配置 1、设备树 t527 dtsi: bsp/configs/linux-5.15/sun55iw3p1.dtsi t527 uboot-board.dts device/config/chi…

必看丨SSL证书是什么?怎么免费申请一张?

SSL证书是一种网络安全证书&#xff0c;它能帮助网站实现数据加密传输&#xff0c;保障用户信息在浏览器和网站服务器之间的安全交流。想象一下SSL证书就像一封密信的封蜡&#xff0c;确保信件内容在途中不会被他人偷看或篡改。 SSL证书的作用主要有两点&#xff1a; 1. 身份验…