WinForms 文本框中的按钮

2023-12-08

WinForms 文本框是否具有任何可以在框末尾嵌入按钮的属性?

就像 Chrome 地址框上的收藏夹按钮一样:

enter image description here

我还在某些 Excel 表单中看到类似以下内容:

enter image description here


EDIT

我按照 Hans Passant 的回答添加了一个点击事件处理程序,它似乎工作正常:

protected override void OnLoad(EventArgs e) {
    var btn = new Button();
    btn.Size = new Size(25, textBoxFolder.ClientSize.Height + 2);
    btn.Location = new Point(textBoxFolder.ClientSize.Width - btn.Width, -1);
    btn.Cursor = Cursors.Default;
    btn.Image = Properties.Resources.arrow_diagright;
    btn.Click += btn_Click;     
    textBoxFolder.Controls.Add(btn);
    // Send EM_SETMARGINS to prevent text from disappearing underneath the button
    SendMessage(textBoxFolder.Handle, 0xd3, (IntPtr)2, (IntPtr)(btn.Width << 16));
    base.OnLoad(e);
}

[System.Runtime.InteropServices.DllImport("user32.dll")]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);

private void btn_Click(object sender, EventArgs e) {
    MessageBox.Show("hello world");
}

获取 TextBox 内的按钮只需将其添加到框的 Controls 集合中。您还需要采取一些合理的措施来防止按钮下方框中的文本消失;这需要一点点pinvoke。像这样:

    protected override void OnLoad(EventArgs e) {
        var btn = new Button();
        btn.Size = new Size(25, textBox1.ClientSize.Height + 2);
        btn.Location = new Point(textBox1.ClientSize.Width - btn.Width, -1);
        btn.Cursor = Cursors.Default;
        btn.Image = Properties.Resources.star;
        textBox1.Controls.Add(btn);
        // Send EM_SETMARGINS to prevent text from disappearing underneath the button
        SendMessage(textBox1.Handle, 0xd3, (IntPtr)2, (IntPtr)(btn.Width << 16));
        base.OnLoad(e);  
    }

    [System.Runtime.InteropServices.DllImport("user32.dll")]
    private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);

当我测试右边距时看起来像这样(应该选择一个更漂亮的位图):

enter image description here

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

WinForms 文本框中的按钮 的相关文章

随机推荐

  • 使用 std::string 构造函数复制 const char *

    这段代码可以吗 void SomeClass foo const char name name is of type const char name std string name c str 看起来它正在工作 但我不确定它是否可以 我应该
  • 跨平台 Google OAuth 登录:redirect_uri 不匹配

    我使用 Google OAuth 对我的应用程序上的用户进行身份验证 并面临以下问题redirect uri支持多个客户端应用程序 在服务器端 我提供了一个使用 Google PHP SDK 的 REST API 登录流程几乎与此处描述的类
  • 使用 Code First EF6 的多租户

    我们的组织需要拥有单一数据库 多租户 按表模式 而不是按租户 ID 建筑学 这里有一篇关于此类事情入门的很棒的文章 http romiller com 2011 05 23 ef 4 1 multi tenant with code fir
  • 旋转和移动 UIImageView (CocoaTouch)

    此代码用于旋转 CGAffineTransform transform CGAffineTransformMakeRotation radians lastAngle anImage transform transform 这段代码可以移动
  • 错误:“int”对象不可下标 - 在reduce函数中使用lambda时

    运行以下代码时 出现以下错误 Traceback most recent call last File Users crosseyedbum Documents Visual Studio Code Fundamentals of Pyth
  • Swift - 移动到另一个场景时如何从场景中删除滑动手势?

    所以我的游戏使用滑动手势 在我的 didMoveToView 函数中我初始化了这些手势 let swipeRight UISwipeGestureRecognizer swipeRight direction UISwipeGestureR
  • Visual Studio 2017:在类库项目中嵌套文件

    在 Web 项目中 您可以选择嵌套文件 startup cs startup internals cs startup configuration cs 有什么方法可以在类库项目中实现相同的行为吗 更新 部分解决 好的 我知道了 您需要了解
  • NoReverseMatch - Django 1.7 初学者教程

    我正在遵循 Django 1 7 1 中的初学者教程并收到此错误 Reverse for vote with arguments 5 and keyword arguments not found 0 pattern s tried pol
  • 为什么朴素素性测试算法不是多项式

    我想了解为什么以下朴素素性测试算法不是多项式 IsPrime n an integer Begin For i 2 to n 1 do If n i 0 then return no EndIf EndFor return yes End
  • 如何在 iOS 7 上以兼容模式调试应用程序?

    所以 iOS 7发布了 我们很多用户已经升级了 尽管我们官方不支持iOS 7 并要求大家不要升级 目前该应用程序以兼容模式运行 我们的用户报告了很多问题 问题是我不知道如何在兼容模式下调试 所以其中一些问题确实很难修复 我尝试用谷歌搜索它
  • Android JNI 从 Java 类获取两个字段

    在发布任何代码或任何内容之前 让我解释一下我要实现的目标 我想做的是从资产文件夹中获取加载着色器 并传递一组PongDroidShader对象转换为 C 以便它可以编译和加载它们 在我的 Java 类中 我有一个函数 它会遍历着色器文件夹中
  • 使用 SQL Server LIKE 模式搜索“全字匹配”

    有谁有LIKE仅匹配整个单词的模式 它需要将空格 标点符号和字符串的开头 结尾考虑为单词边界 我没有使用 SQL 全文搜索 因为它不可用 我认为在以下情况下没有必要进行简单的关键字搜索LIKE应该能够做到这一点 但是 如果有人测试过全文搜索
  • Haskell:更快的素数求和

    免责声明 我正在研究欧拉问题 9 我正在将一些相当大的数字相加 所有从 1 到 2 000 000 的素数 对这些素数求和需要很长时间 我正在使用 haskell 内置函数 sum as in sum listOfPrimes 还有其他更快
  • 具有相同 nuget 包的项目引用不同版本的程序集

    我快要疯了 我希望这是我忽略的事情 我正在经历间歇性的FileLoadExceptions 即使代码在部署之间发生变化 它们也会在部署后显示不更改任何程序集引用 看看最近的例子 我看到了FileLoadException due to Sy
  • 无需 GUI 即可运行 Electron

    我看到这个问题已被询问但该问题的上下文不同 因此没有与我的用例相关的答案 因此我提出一个新问题 我有一个基于 Electron 的 Web 服务器 它适用于不习惯命令行的网络开发新手 学生和艺术家 是的 这是一个很大的争论 但我被加州大学洛
  • 为什么我的应用程序无法在 Xcode 8 beta (8S128d) 中运行

    这是一个会影响许多应用程序的问题 可以在 Xcode 8 beta 8S128d 中找到 这是第一个 Beta 版 尽管它没有标记为 beta 1 问题出在 NSUserDefaults 上 它不起作用 这是代码 也许可以将其放入appli
  • Python:(显式)字符串参数会损害性能吗?

    假设某个函数总是获取一些它不使用的参数 def someFunc s do something not using s for example a 1 现在考虑这个电话 someFunc the unused string 它给出一个字符串
  • DbNull.Value 和 DbNull.Value.ToString() 之间的区别

    我想知道哪种用法是正确的 if string IsNullOrEmpty parentID cmd Parameters Add new SqlParameter ParentSesID parentID else cmd Paramete
  • 将用于生成电子邮件的 PHP 脚本转换为使用表单中的变量行

    我正在使用 PHP 脚本根据表单中的信息生成电子邮件 该表单的行数可变 我已将表单中每行的输入名称转换为数组 方法是添加 名称后 以便所有行中的数据都可用于生成电子邮件 但是 我不知道该怎么做是如何构建 PHP 以便它可以生成一封电子邮件
  • WinForms 文本框中的按钮

    WinForms 文本框是否具有任何可以在框末尾嵌入按钮的属性 就像 Chrome 地址框上的收藏夹按钮一样 我还在某些 Excel 表单中看到类似以下内容 EDIT 我按照 Hans Passant 的回答添加了一个点击事件处理程序 它似