自定义控件的文本框字符串/文本的填充

2023-11-23

我是新手,最近才问这个问题question,它告诉我如何为 TextBox 的底部边框提供最佳选择,以防止由绘制的图形导致的闪烁/撕裂。

现在我的问题是如何为文本框中的文本/字符串设置边距/填充,代码如下:

using System.Drawing;
using System.Windows.Forms;

namespace main.Classes.CustomControls {

    class TextBoxMaterial : TextBox {
        public TextBoxMaterial() {
            this.BorderStyle = System.Windows.Forms.BorderStyle.None;
            this.Controls.Add(new Label() {
                Height = 2,
                Dock = DockStyle.Bottom,
                BackColor = Color.Gray,
            });
        }
    }
}

当前文本框:

enter image description here

我需要拥有什么:

enter image description here


您可以为以下文本设置左内边距和右内边距TextBox通过发送EM_SETMARGINS。您还可以设置AutoSize的财产TextBox设置为 false 即可更改控件的高度。 结果如下:

enter image description here

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;
using System.Drawing;
public class ExTextBox : TextBox
{
    [DllImport("user32.dll")]
    private static extern IntPtr SendMessage(IntPtr hwnd, int msg,
        int wParam, int lParam);
    private const int EM_SETMARGINS = 0xd3;
    private const int EC_RIGHTMARGIN = 2;
    private const int EC_LEFTMARGIN = 1;
    private int p = 10;
    public ExTextBox()
        : base()
    {
        var b = new Label { Dock = DockStyle.Bottom, Height = 2, BackColor = Color.Gray };
        var l = new Label { Dock = DockStyle.Left, Width = p, BackColor = Color.White };
        var r = new Label { Dock = DockStyle.Right, Width = p, BackColor = Color.White };
        AutoSize = false;
        Padding = new Padding(0);
        BorderStyle = System.Windows.Forms.BorderStyle.None;
        Controls.AddRange(new Control[] { l, r, b });
    }
    protected override void OnHandleCreated(EventArgs e)
    {
        base.OnHandleCreated(e);
        SetMargin();
    }
    private void SetMargin()
    {
        SendMessage(Handle, EM_SETMARGINS, EC_RIGHTMARGIN, p << 16);
        SendMessage(Handle, EM_SETMARGINS, EC_LEFTMARGIN, p);
    }
}

要知道右侧标签的作用是什么,尽量不要添加到控件中,然后写一个长文本到TextBox并使用箭头键转到文本末尾,然后使用箭头键再次返回到开头。

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

自定义控件的文本框字符串/文本的填充 的相关文章

随机推荐

  • 如何查看运行状态并停止耐用功能

    我想按需处理数百万条记录 处理时间大约需要 2 3 小时 我想要无服务器 这就是为什么尝试持久功能 第一次 我想检查一下 我可以运行持久函数多长时间 所以我创建了 3 个函数 用于启动 Orchestrator 功能的 Http 函数 Or
  • 在 Spark/Jetty-server 中重新加载静态文件

    我在这里描述了一个有点类似的问题 刷新 SparkJava 提供的静态文件 在我的应用程序中 用户可以将内容上传到一个文件夹 该文件夹也提供给用户 Spark staticFileLocation public 特征 据我所知 SparkJ
  • Github webhooks - 预推送挂钩

    我的要求是 每当开发人员推送到 github 时 在推送之前应该在 Jenkins 服务器上触发 CI 构建 如果构建失败 则应拒绝推送到 github 我需要为此编写挂钩 但我不想编写客户端挂钩 因为开发人员可以禁用它们 我想要服务器端
  • PHP - error_reporting 不起作用

    我的网络托管提供商不提供启用错误报告的选项 所以尝试使用 error reporting E ALL 但这也行不通 我尝试了以下脚本 如果我正确阅读了手册 那么这应该会生成错误通知 但这也行不通 我是否做错了什么 或者这是获得新的网络托管提
  • 在 Scala 中重载通用事件处理程序

    如果我定义以下通用事件处理程序 trait Handles E lt Event def handle event E 事件类型如下 trait Event class InventoryItemDeactivated val id UUI
  • 使用自定义标头获取 GET 请求?

    我正在尝试向 API 发送 GET 请求 但是当我在代码中添加自定义标头时 会发生一些奇怪的事情 当请求方法到达 Web 服务器时 某个地方会更改为 OPTIONS 但是当我在没有标头的情况下执行相同操作时 它将是 GET 类型 当我使用应
  • 使用 Pdf.js 突出显示 pdf 中的一个部分

    我目前在我的项目中使用 pdf js 来渲染 PDF 现在有一项棘手的任务 即在给定坐标的情况下突出显示 PDF 页面的一部分 Example 给定一个边界部分 例如 31 35 40 35 40 40 31 40 我应该用任何选择的原色来
  • Rails 3 和 Devise:注册后重定向到页面(可确认)

    我有一个带有 Devise 的 Rails 3 项目 启用了可确认功能 因此用户必须在注册后通过电子邮件确认其帐户 目前该项目将用户返回到登录页面并抛出 您已成功注册 通知 我想做的是将他们重定向到 谢谢 页面 并提供进一步的说明 检查您的
  • 您将如何将站点从 Prototype 切换到 jQuery

    我已经用 Prototype 编写了一个网站 但想切换到 jQuery 关于如何最好地进行转换有什么想法吗 就我个人而言 我喜欢分步进行 所以我会从使用两者开始 如下所示 jQuery noConflict Put all your cod
  • 在 Kotlin 中,如何使属性只能由特定类型访问

    假设我有一个与此类似的 Kotlin 类 class MyKotlinExample val mMyString MutableLiveData
  • 如何检查每个用户会话正在运行的进程?

    我有一个 NET 应用程序 我只允许一次运行一个进程 但是该应用程序有时会在 Citrix 机器上使用 因此可以由同一台计算机上的多个用户运行 我想检查并确保该应用程序在每个用户会话中仅运行一次 因为现在如果用户 A 正在运行该应用程序 则
  • 有效、简洁的方法来找到下一个匹配的兄弟姐妹?

    坚持官方的 jQuery API 除了使用之外 是否有一种更简洁但效率不低的方法来查找与给定选择器匹配的元素的下一个同级元素nextAll与 first伪类 当我说官方 API 时 我的意思是不要破解内部结构 直接使用 Sizzle 在组合
  • 将 UITableview 数据源和委托与主 UIViewController 类分开的简单方法?

    典型的 UITableView 使用模式是让主 UIViewController 成为它所持有的 UITableView 的目标数据源和委托 是否有任何简单易懂的教程可以帮助我弄清楚如何将与 UITableViewDelegate 和 UI
  • 之间的区别?和 !用斯威夫特语言? [复制]

    这个问题在这里已经有答案了 我在网上阅读了很多文章并预订了 Apple 但我无法找出之间的区别 和 Swift 语言中的运算符 override func tableView tableView UITableView cellForRow
  • C++/WIN32 看起来很专业的应用程序 - 真的可能吗?

    我一直在到处寻找关于如何发布具有当今 高端 外观的应用程序的良好解决方案 技巧 众所周知 当使用 Windows 进行编码时 我们通常会得到 Windows 风格的颜色 按钮 列表等 它们只是看起来和感觉都很丑 当我们决定要出售应用程序时
  • 确定当前应用程序是否已激活(具有焦点)

    注意 有一个非常相似的问题 但它是 WPF 特定的 这个不是 如何确定当前应用程序是否已激活 即具有焦点 这有效
  • stable_clock 在线程之间是单调的吗?

    的单调性质是std chrono steady clock跨线程保存 例如 假设我有以下程序 include
  • pymongo [SSL: CERTIFICATE_VERIFY_FAILED]:Mongo Atlas 上的证书已过期

    我在 Django 应用程序中使用 MongoDB Mongo Atlas 直到昨天一切都工作正常 但是今天 当我运行服务器时 它在控制台上显示以下错误 Exception in thread django main thread Trac
  • AppDelegate.swift如何替换Xcode 6.3中的AppDelegate.h和AppDelegate.m

    根据iOS 开发者库 应用程序委托是您编写自定义应用程序级代码的地方 与所有类一样 AppDelegate 类在应用程序的两个源代码文件中定义 接口文件 AppDelegate h 和实现文件 AppDelegate m 中 然而 在 Xc
  • 自定义控件的文本框字符串/文本的填充

    我是新手 最近才问这个问题question 它告诉我如何为 TextBox 的底部边框提供最佳选择 以防止由绘制的图形导致的闪烁 撕裂 现在我的问题是如何为文本框中的文本 字符串设置边距 填充 代码如下 using System Drawi