C# WinForm扩展控件TextBox底部下划线展示

2023-11-12

在winform项目中,新建一个类 TextBoxLine ,然后编译项目,打开工具箱就可以看到控件了

代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Drawing;

namespace mesScan.SystemControl
{
    [ToolboxItem(true)]
    public partial class TextBoxLine : TextBox
    {
        public TextBoxLine()
        {
           // InitializeComponent();

            this.SetStyle(ControlStyles.DoubleBuffer, true);
            this.BorderStyle = BorderStyle.None;
        }

        public TextBoxLine(IContainer container)
        {
            container.Add(this);

          //  InitializeComponent();

            this.SetStyle(ControlStyles.DoubleBuffer, true);
            this.BorderStyle = BorderStyle.None;
        }

        private bool m_DrawLine = false;
        public bool DrawLine
        {
            get
            {
                return this.m_DrawLine;
            }
            set
            {
                this.m_DrawLine = value;
                this.Invalidate();
            }
        }
        private Color _linecolor = Color.Black;
        /// <summary>
        /// 线条颜色
        /// </summary>
        public Color LineColor
        {
            get
            {
                return this._linecolor;
            }
            set
            {
                this._linecolor = value;
                this.Invalidate();
            }
        }

        [System.Runtime.InteropServices.DllImport("user32.dll ")]
        static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);
        [System.Runtime.InteropServices.DllImport("user32.dll ")]
        static extern IntPtr GetWindowDC(IntPtr hWnd);

        protected override void WndProc(ref Message m)
        {
            base.WndProc(ref m);
            if (m.Msg == 0xf || m.Msg == 0x133)
            {
                if (this.DrawLine)
                {
                    IntPtr hDC = GetWindowDC(m.HWnd);
                    if (hDC.ToInt32() == 0)
                    {
                        return;
                    }
                    Graphics g = Graphics.FromHdc(hDC);
                    Pen p = new Pen(this._linecolor, 3.5f);
                    Point p1 = new Point(0, this.Height - 1);
                    Point p2 = new Point(this.Width, Height - 1);
                    g.DrawLine(p, p1, p2);
                    m.Result = IntPtr.Zero;
                    ReleaseDC(m.HWnd, hDC);
                }
            }
        }
    }
}

 使用 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# WinForm扩展控件TextBox底部下划线展示 的相关文章

随机推荐

  • java 注解 @Retention @interface 元数据

    java注解 即是注释了 百度解释 也叫元数据 一种代码级别的说明 个人理解 就是内容可以被代码理解的注释 一般是一个类 元数据 也叫元注解 是放在被定义的一个注解类的前面 是对注解一种限制 只有两个 Retention 和 Target
  • 程序员常见系统错误代码大全:1到15841

    程序员常见系统错误代码大全 1到15841 提示 使用浏览器的Ctrl F键盘组合来搜索错误代码 要么搜索错误消息本身 要么只搜索错误代码 例如 错误代码635 系统错误代码大全 1到15841 错误代码1 功能不正确 ERROR INVA
  • IDEA获取gitee仓库的数据时,发生错误

    以本人遇到的情况为例 以上错误与本地的代码没有关系 主要原因是gitee仓库上的application yml配置文件的格式编写有误所导致 修改正确之后即可成功获取
  • DTO与Entity相互转化

    import java lang reflect Method import java util concurrent ConcurrentHashMap import org slf4j Logger import org slf4j L
  • 关于path用变量的问题思考

    1 用go解析路由时 中间件里相对路由做统一处理 或者是对于一组路由做处理 只能挨个正则去匹配 要不就多写代码 侵入业务 2 路由不可读 命名再不规范的话 抓包也痛苦 需要看代码才能理解这个接口是做什么的 和前端对接口时 前端 接口名字是什
  • 微服务回归单体,代码行数减少75%,性能提升1300%

    关注并星标腾讯云开发者 每周3 谈谈我在腾讯的架构设计经验 第5期 李浩津 13倍性能重构 搜索内容架构 C 微服务群改造 内容架构是 QQ 浏览器搜索的内容接入和计算层 主要负责腾讯域内的内容接入和处理 当前接入了多个合作方的上千类内容
  • leaflet可视化平台搭建

    leaflet viz Leaflet可视化平台 https github com zrysmt leaflet viz leaflet是一个开源的前端地图交互类库 比较轻量级 支持移动端 而且有丰富的插件资源可供我们使用 Echarts是
  • matplotlib绘制3d图形出现空白,解决办法

    如果出现如下图空白 或者出现下面报错MatplotlibDeprecationWarning Axes3D fig adding itself to the figure is deprecated since 3 4 Pass the k
  • 三大框架 之 Hibernate查询(一对多、多对多、查询关系)

    目录 一对多 表之间关系 表之间关系建表原则 一对多关系配置 建立表 建立ORM 添加配置文件 在hibernate cfg xml中的标签里 添加核心配置文件 引入工具类 编写测试类 级联操作 什么是级联 级联分类 级联是有方向性 级联保
  • openfeign使用报错:No Feign Client for loadBalancing defined.

    错误描述 nested exception is java lang IllegalStateException No Feign Client for loadBalancing defined Did you forget to inc
  • DDR中的ODT功能详解及波形对比

    ODT on die termination 即为片内端接 就是将端接电阻放在了芯片内部 这个功能只有在DDR2以上的数据信号才有 而有了ODT功能 原本需要在PCB板上加串联电阻的数据信号就不需要再额外添加端接了 只需要芯片内部打开ODT
  • 敌兵布阵

    http acm hdu edu cn showproblem php pid 1166 Problem Description C国的死对头A国这段时间正在进行军事演习 所以C国间谍头子Derek和他手下Tidy又开始忙乎了 A国在海岸线
  • java将两个有序链表合并成有序链表

    利用递归法将两有序链表合并成链表 且合并后的链表仍然有序 比较链表1和链表2的第一个结点数据 如果head1 data
  • DDoS攻击重大历史事件

    历史上有名ddos的攻击事件很多 涉及行业包括政治 经济 军事等各个行业 下面列举一下2016年比较有名的几起DDOS事件 1 暴雪DDoS攻击 LizardSquad组织对暴雪公司战网服务器发起DDoS攻击 包括 星际争霸2 魔兽世界 暗
  • ARM 异常介绍

    一 中断概念 CPU 在执行当前程序的过程中因硬件或软件的原因插入了另一段程序运行的过程 硬件引起的中断不可预测 随机性 软中断 事先在程序中安排特殊指令 CPU 执行到该类指令时 转去执行相应的一段预先安排好的程序 然后再返回来执行原来的
  • 用三元操作符替代if-else以降低CPU分支预测惩罚实现Unity内函数13倍提速

    测试对象 1 C Unity脚本 2 C DLL mcs build的动态链接库再导入Unity 3 C Native Code LLVM编译后导入Unity 被测试函数源码 两个随机数数组进行大小比较 一个数组保存大数 另一个保存小数 C
  • 动态IP代理是什么?一文看懂动态代理IP

    一 什么是动态IP代理 动态IP代理是一种代理服务 而动态IP是由ISP动态分配给用户的IP地址 这些IP地址会周期性地更改 每次链接互联网时 用户会被分配一个新的IP地址 因而也称为 轮换IP IP地址轮换是一个过程 您的IP 地址 网络
  • Unity教程:GUI 界面开发

    UI概述 UI永远是显示在屏幕的最前面上 不受变形 碰撞 光照的影响 GUI概述 GUI是Graphical User Interface的缩写 Unity的图形界面系统能容易和快速创建出各种交互界面 与传统的方法 创建GUI对象 标出位置
  • 神经网络之VGG

    目录 1 VGG的简单介绍 1 2结构图 3 参考代码 VGGNet 16 架构 完整指南 卡格尔 kaggle com 1 VGG的简单介绍 经典卷积神经网络的基本组成部分是下面的这个序列 带填充以保持分辨率的卷积层 非线性激活函数 如R
  • C# WinForm扩展控件TextBox底部下划线展示

    在winform项目中 新建一个类 TextBoxLine 然后编译项目 打开工具箱就可以看到控件了 代码 using System using System Collections Generic using System Compone