C# Winform 工控机 多选下拉框 MultiComboBox

这篇具有很好参考价值的文章主要介绍了C# Winform 工控机 多选下拉框 MultiComboBox。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作为寄几第一个写的较复杂的控件,把整个规程完整的写下来。整体思路是用现成的ComboBox和CheckedListBox组合实现功能

平台:VS2022,Framework4.8

一、效果

winform下拉框控件,c#,开发语言

 二、编写代码

1.新建“Windows窗体应用(.NET Framework),采用默认设置

2.添加新类,命名为MultiComboBox,在其中添加如下代码

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Windows.Forms;

namespace MultiComboBox
{
    internal class MultiComboBox : UserControl
    {
        private ComboBox comboBox = new ComboBox();
        public CheckedListBox CheckedListBox { get; set; }  //为选项赋值的接口
        public List<string> SelectedItems1 { get; set; }  //传递已选择项目的接口

        public MultiComboBox()
        {
            this.VerticalScroll.Enabled = true;
            this.AutoSize = true;
            CheckedListBox=new CheckedListBox();
            CheckedListBox.CheckOnClick = true;
            CheckedListBox.Visible = false;
            comboBox=new ComboBox();
            comboBox.Width = 150;
            comboBox.DrawMode = DrawMode.OwnerDrawFixed;
            comboBox.IntegralHeight = false;
            comboBox.DroppedDown = false;
            comboBox.DropDownHeight = 1;
            comboBox.DropDownStyle = ComboBoxStyle.DropDown;
            comboBox.AutoCompleteSource = AutoCompleteSource.ListItems;
            CheckedListBox.MouseUp += MouseUp1;
            CheckedListBox.MouseLeave += MouseLeave1;
            comboBox.MouseDown += MouseDown1;
            comboBox.DropDown += MouseLeave2;
            this.Controls.Add(comboBox);   //添加控件
        }
        //
        #region 订阅方法模块
        //
        private void MouseLeave1(object sender, EventArgs e)  //鼠标离开CheckedListBox,隐藏CheckedListBox
        {
            CheckedListBox.Hide();
        }
        private void MouseLeave2(object sender, EventArgs e)  //ComboBox下拉时,显示下拉框
        {
            // 显示下拉框
            CheckedListBox.Width = comboBox.Width;
            CheckedListBox.Size = new Size(comboBox.DropDownWidth, CheckedListBox.Items.Count*18);
            CheckedListBox.Location = new Point(comboBox.Left, comboBox.Height);
            Controls.Add(CheckedListBox);
            CheckedListBox.Visible = true;
        }
        private void MouseUp1(object sender, EventArgs e)  //在CheckedListBox中选择后,在ComboBox中显示相应项目
        {
            var list = new List<string>();
            foreach (var v in CheckedListBox.CheckedItems)  //将选择的项目加入list
            {
                list.Add(v.ToString());
            }
            comboBox.Text = String.Join(",", list);
            SelectedItems1 = list;  //把选项赋给传递接口
        }
        private void MouseDown1(object sender, EventArgs e) //在ComboBox的下拉三角按下鼠标时,不显示ComboBox的下拉框,显示CheckedListBox当作其下拉框
        {
            comboBox.DroppedDown = false;
        }
        #endregion 
        //
        private void InitializeComponent()
        {
            this.SuspendLayout();
            // 
            // MultiComboBox
            // 
            this.Name = "MultiComboBox";
            this.Size = new System.Drawing.Size(414, 84);
            this.ResumeLayout(false);
        }
    }
}

3.重新生成解决方案后,在”Form1.cs[设计]“中拖入MultiComboBox、Button

winform下拉框控件,c#,开发语言

 在Form1.cs中添加如下代码

using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace MultiComboBox
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //为下拉菜单添加选项
            multiComboBox1.CheckedListBox.Items.Add("1");
            multiComboBox1.CheckedListBox.Items.Add("2");
            multiComboBox1.CheckedListBox.Items.Add("3");
            multiComboBox1.CheckedListBox.Items.Add("4");
            multiComboBox1.CheckedListBox.Items.Add("5");
        }

        private void button1_Click(object sender, EventArgs e)  //单击button时,通过MultiComboBox的接口显示已选项目
        {
            var a = multiComboBox1.SelectedItems1;
            string b = string.Join(",", a);
            MessageBox.Show(b);
        }
    }
}

运行即可

注:

Form1.Designer.cs中自动添加的代码,有时候添加

this.multiComboBox1 = new MultiComboBox.MultiComboBox();

会报错,改为

this.multiComboBox1 = new MultiComboBox();

即可文章来源地址https://www.toymoban.com/news/detail-701390.html

到了这里,关于C# Winform 工控机 多选下拉框 MultiComboBox的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • WPF工控机textbox获得焦点自动打开软键盘

    1.通过nuget安装 osklib.wpf  2.在textbox getFoucs中敲入如下代码即可实现获得焦点弹出软键盘  3.如果界面上的textbox比较,就直接在窗体事件中写。注意第一句为判断是否为textbox

    2024年02月10日
    浏览(35)
  • 大尺寸工控机丨工控一体机丨工业计算机丨工业电脑与MES系统的联系

    MES系统是一种应用于制造业的生产管理系统。它将计算机技术、自动化技术和信息技术相结合,实现了生产线的数字化、智能化和自动化管理。MES系统可以实现对生产过程的实时监控、数据采集和分析、生产计划的制定和调整、生产过程的优化和控制、产品质量的保证和追溯

    2024年04月25日
    浏览(30)
  • 配置teamviewer远程无显示器ubuntu工控机实操

    应用场景: intel NUC主机安装有ubuntu18.04系统,需要部署该主机的工控环境在异地,同时工控环境不提供长期的显示器支持,只有wifi可以连接。初始连接好wifi后,需要断开真实的显示器,并保持稳定的远程连接环境。 网上相关教程有很多,这里不再详细讲了 去TeamViewer官网下

    2024年02月11日
    浏览(46)
  • HDMI+钡铼ARM工控机:打造工业4.0时代的智能车间

    在深入探讨这款钡铼技术ARM工业计算机的功能特点时,我们发现其在实现车间实时管理、数据分析和决策支持方面的优势尤其突出: 通过HDMI接口连接至大型显示器或者智能电视,这款ARM工业计算机能够建立起一套完整的车间视觉管理系统,使复杂的生产数据转化为直观的可

    2024年04月14日
    浏览(42)
  • 自动化的驱动力,工控机助您实现智能生产!

    “智能工厂建设如火如荼,部分成果已经落地,在大规模资金投入的市场催化下,海尔、海信等制造企业通过智能工厂手段推进生产效率成倍增长的新闻层出不穷。在工业4.0时代,“中国制造2025”战略中,智能工厂构建都是其中不可或缺的部分,处于核心地位,大数据、AI、

    2024年02月11日
    浏览(39)
  • 钡铼技术助力ARM工控机在智慧交通中的创新应用

    在交通运输领域,钡铼技术ARM工控机可以实现以下功能: 实时监控和管理:利用钡铼技术ARM工控机,可以对交通运输中的车辆、船只、飞机等进行实时监测和管理,帮助调度员提高车辆调度和路线规划的准确性和效率。 安全保障:利用钡铼技术ARM工控机,可以建立健全的交

    2024年02月06日
    浏览(41)
  • Intel N100工控机使用核显加速推理yolov5模型

    今年3月初开始,某平台开始陆续上货基于英特尔Alder Lake-N处理器系列的迷你主机。最先出现的是N95和N100两款处理器,迷你主机的整机价格已经打到800元左右的水平了,还是有挺高可玩性的。其中N100的规格如下: 这个cpu性能虽然不是很强,性能接近4代i5移动端,但功耗很低,

    2024年02月14日
    浏览(49)
  • 利用笔记本实现对工控机网络共享与远程控制功能( 以windows为例)

            本文章为笔者为完成大创项目需求的记要,由于项目中需求工控机实现户外联网独立工作,故需要提前对工控机做好配置,并为后续的项目优化迭代做好铺垫;后续会更新linux版本控制。         1.笔记本一台(windows10 专业版,家庭版无法使用远程桌面控制)    

    2024年02月03日
    浏览(39)
  • 台式机/工控机通过网线共享笔记本电脑无线网络&linux系统下 usb网卡的驱动安装

    一、台式机/工控机通过网线共享笔记本电脑无线网络 1、 将台式机通过网线和笔记本连接。 2、 将笔记本的“本地连接”和“无线网络连接”的ipv4均设置为自动获取。 4.修改台式机的IP地址为如下(对应笔记本信息) IP地址为192.168.XXX.12 子网掩码为255.255.255.0 默认网关为192

    2024年02月14日
    浏览(75)
  • 优先看我的博客:工控机 Ubuntu系统 输入密码登录界面后界面模糊卡死,键盘鼠标失效(不同于其他博主的问题解决方案,优先看我的博客。)

            (不同于其他博主的问题解决方案,工控机Ubuntu的系统   优先看我的博客。) 系统版本: ubuntu18.04 主机: 工控机 应用场景: 电力系统巡检机器人,工控机外hdmi接显示器,外接鼠标键盘。 问题: 之前在自己公司测试工控机可正常工作,但是发往客户现场后出现问

    2024年01月17日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包