tabControl 中的关闭按钮

2024-01-11

有没有人可以告诉我如何在 C# 中使用 tabControl 在每个选项卡中添加关闭按钮? 我计划使用按钮 pic 来替换我的选项卡中的 [x] ..

谢谢


无需派生类,这里有一个简洁的片段:http://www.dotnetthoughts.net/implementing-close-button-in-tab-pages/ http://www.dotnetthoughts.net/implementing-close-button-in-tab-pages/

将选项卡控件的 DrawMode 属性设置为 OwnerDrawFixed。该属性决定系统或开发人员是否可以绘制标题。 在选项卡控件的 DrawItem 事件中添加代码 - 将调用该事件来绘制每个选项卡页。

    //This code will render a "x" mark at the end of the Tab caption. 
e.Graphics.DrawString("x", e.Font, Brushes.Black, e.Bounds.Right - 15, e.Bounds.Top + 4);
e.Graphics.DrawString(this.tabControl1.TabPages[e.Index].Text, e.Font, Brushes.Black, e.Bounds.Left + 12, e.Bounds.Top + 4);
e.DrawFocusRectangle();

现在,对于关闭按钮操作,我们需要将以下代码添加到选项卡控件的 MouseDown 事件中。

//Looping through the controls.
for (int i = 0; i < this.tabControl1.TabPages.Count; i++)
{
    Rectangle r = tabControl1.GetTabRect(i);
   //Getting the position of the "x" mark.
    Rectangle closeButton = new Rectangle(r.Right - 15, r.Top + 4, 9, 7);
    if (closeButton.Contains(e.Location))
    {
        if (MessageBox.Show("Would you like to Close this Tab?", "Confirm", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
        {
            this.tabControl1.TabPages.RemoveAt(i);
            break;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tabControl 中的关闭按钮 的相关文章

  • CMake 找不到请求的 Boost 库

    既然我已经浏览了其他人的解决方案几个小时 但找不到适合我的问题的正确答案 我想将我的具体问题带给您 我正在尝试使用 CMake 构建 vsomeip 为此 我之前构建了 boost 1 55 但是 我在 CMake 中收到以下错误 The
  • 将 new 与 decltype 一起使用

    T t T is an implementation detail t new T want to avoid naming T to allow for flexibility t new decltype t error cannot
  • 您可以从基本 Win32 控制台模板应用程序中的 C#/Winrt 组件调用(不是 WinForm/abstractions/wrappers 或使用 C++/Winrt 模板)吗?)

    我有一个现有的程序 win32 x86 控制台应用程序 需要调用托管代码 来自 Net 的 C dll The dll不暴露给 COM 但可以从 C WinRT 组件调用并由 C WinRT 控制台模板应用引用 BUT即使安装了 C Win
  • 删除是如何工作的? [复制]

    这个问题在这里已经有答案了 可能的重复 C 编程 free 如何知道要释放多少 https stackoverflow com questions 1518711 c programming how does free know how m
  • 检测wlan是否关闭

    任何人都可以给我一个提示 如何在 Windows Phone 上以编程方式检测 C 8 1 应用程序 不是 8 0 是否启用 禁用 WLAN 我不想更改这些设置 只是需要知道 该解决方案是一个 Windows 8 1 通用应用程序 Wind
  • 如何使用 SOAP 且不使用 WSE 在 .NET 中签署 Amazon Web 服务请求

    亚马逊产品广告 API 以前称为 Amazon Associates Web Service 或 Amazon AWS 实施了一项新规则 即自 2009 年 8 月 15 日起 向其发送的所有 Web 服务请求都必须经过签名 他们在其网站上
  • C# 5 async/await 线程机制感觉不对?

    为什么让调用线程进入异步方法直到内部 等待 一旦调用异步方法就生成一个线程 这不是更干净吗 这样您就可以确定异步方法会立即返回 您不必担心在异步方法的早期阶段没有做任何昂贵的事情 我倾向于知道某个方法是否要在 我的 线程上执行代码 不管是堵
  • 将表(行)与 OpenXML SDK 2.5 保持在一起

    我想在 Word 文档中生成多个表 每行 2 行 但我想将这两行保留在一起 如果可能的话 new KeepNext 第一行不起作用 new KeepNext 第一行的最后一段不起作用 new CantSplit 放在桌子上不起作用 在所有情
  • 使用 LINQ 更新 IEnumerable 对象的简单方法

    假设我有一个这样的业务对象 class Employee public string name public int id public string desgination public int grade List
  • 根据对象变量搜索对象列表

    我有一个对象列表 这些对象具有三个变量 ID 名称和值 这个列表中可能有很多对象 我需要根据ID或Name找到一个对象 并更改值 例子 class objec public string Name public int UID public
  • 析构函数中的异步操作

    尝试在类析构函数中运行异步操作失败 这是代码 public class Executor public static void Main var c1 new Class1 c1 DoSomething public class Class
  • 使用具有抗锯齿功能的 C# 更改抗锯齿图像的背景颜色

    我有一个图像需要更改背景颜色 例如 将下面示例图像的背景更改为蓝色 然而 图像是抗锯齿的 所以我不能简单地用不同的颜色替换背景颜色 我尝试过的一种方法是创建第二个图像 仅作为背景 并更改其颜色并将两个图像合并为一个图像 但是这不起作用 因为
  • 为什么 Cdecl 调用在“标准”P/Invoke 约定中经常不匹配?

    我正在开发一个相当大的代码库 其中 C 功能是从 C P Invoked 的 我们的代码库中有很多调用 例如 C extern C int stdcall InvokedFunction int 使用相应的 C DllImport CPlu
  • 如何从 Rx Subscribe 回调异步函数?

    我想回调 Rx 订阅中的异步函数 例如 像那样 public class Consumer private readonly Service service new Service public ReplaySubject
  • Linux mremap 不释放旧映射?

    我需要一种方法将页面从一个虚拟地址范围复制到另一个虚拟地址范围 而无需实际复制数据 范围很大 延迟很重要 mremap 可以做到这一点 但问题是它也会删除旧的映射 由于我需要在多线程环境中执行此操作 因此我需要旧映射能够同时使用 因此稍后当
  • CUDA 8 编译错误 -std=gnu++11

    我正在尝试转换一些代码以使用 CUDA 并且我认为我遇到了兼容性问题 我们使用CMake 这些是我使用的 gcc 和 CUDA 版本 gcc version gcc Ubuntu 5 4 0 6ubuntu1 16 04 5 5 4 0 2
  • 在 C#.NET 中安全删除文件

    在我正在做的一个项目中 我想为用户提供 安全 删除文件的选项 例如 用随机位或 0 覆盖它 在 C NET 中是否有一种简单的方法可以做到这一点 效果如何 你可以调用系统内部删除 http technet microsoft com en
  • 需要提取字符串中点后的最后一个数字,如“7.8.9.1.5.1.100”

    我需要提取 C 字符串中最后一个点后面的最后一个数字 例如 7 8 9 1 5 1 100 并将其存储在整数中 Added 该字符串也可以是 7 8 9 1 5 1 1 或 7 8 9 1 5 1 0 我还想验证它在最后一个点之前恰好是 7
  • INotifyPropertyChanged 和 propertyName

    我一直不确定它的含义propertyName实施时INotifyPropertyChanged 所以一般来说你实现INotifyPropertyChanged as public class Data INotifyPropertyChan
  • 如何使用placement new重新初始化该字段?

    我的课程包含字段 private OrderUpdate curOrderUpdate 我一遍又一遍地使用它 经常需要重新初始化 for int i 0 i lt entries size i auto entry entries i ne

随机推荐

  • 如何使用 Google API 版本 3 通过 VS 2019 部署到 Google Store

    直到最近 我们一直通过 Visual Studio 2019 存档并部署到 Google Play 商店 Google 最近弃用了部署 API 的 v1 和 v2 现在 当我尝试从 VS 进行部署时 它显示 此 API 已被弃用并且不再可用
  • Visual Studio 解决方案中的文件夹或项目? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 将解决方案拆分为逻辑层时 什么时候最好使用单独的项目而不是仅按文件夹分组 默认情况下 总是只创建新文件夹在同一项目内 您将获得单个组件 无需额外
  • Python-将图像转换为像素值字符串

    我有一张从网络摄像头捕获的 jpg 图像 它是一个灰度图像 我需要将图像转换为其像素字符串 如下所示 255 232 45 678 56 23 345 76 44 767 433 345 我该怎么做呢 另外 改变图像的大小会改变这些值吗 假
  • 会员模板功能。为什么这个不能编译?

    我想在列表上迭代成员函数 在此代码示例中 我在 for 行中收到编译器错误 预期的 在它之前 它没有声明 结束也没有声明 为什么 该函数甚至没有在代码中使用 template
  • 接口的通用类型约束?

    我可以做这个 void MyMethod
  • 如何从 window.location.pathname 中删除尾部斜杠

    我有以下代码 允许我在网站的桌面版本和移动版本之间切换 我最近意识到所做的只是将每个人都带到该网站的主页 我仔细研究了一下 发现我可以通过将上面的内容修改为 将特定页面重定向到移动版本
  • 通过“Referer”标头防止跨站请求伪造

    我们最近收到了 IBM AppScan DAST 的结果 其中一些结果没有多大意义 2 Medium 跨站请求伪造 风险 可能会窃取或操纵客户会话和 cookie 这可能会被用来冒充合法的 用户 允许黑客查看或更改用户记录 并以该用户身份执
  • 想要在数据表中显示加载程序 GIF

    我正在使用数据表 我的代码工作正常 现在我想添加加载程序图像 gif 我不知道如何添加这个 这是到目前为止我的数据表脚本 document ready function dvloader show oTable example dataTa
  • WPF 仅更改组合框的 PART_EditableTextBox 上的属性

    我想更改默认 wpf 组合框的 PART EditableTextBox 例如更改背景 我尝试添加这样的样式
  • Commander.js 在没有命令的情况下调用时显示帮助

    我在用着指挥官 js https github com tj commander js 编写一个与 API 交互的简单 Node js 程序 所有调用都需要使用子命令 例如 apicommand get 调用方式如下 program ver
  • 无法使用 Appium 在 Android 中单击权限对话框中的“允许”按钮

    我无法使用 Appium Java 在 Android 中点击权限对话框上的 拒绝 或 允许 按钮 在点击这些按钮之前我是否需要添加任何功能 下面是代码 DesiredCapabilities capabilities new Desire
  • 如何使用正则表达式找到 python 字符串中 str.format 的所有占位符? [复制]

    这个问题在这里已经有答案了 我正在创建一个使用用户指定的格式重命名文件的类 该格式将是一个简单的字符串 其str format将调用方法来填充空白 事实证明 我的程序需要提取大括号中包含的变量名称 例如 一个字符串可能包含 user 这应该
  • sbt 构建后 gephi-toolkit 中缺少类

    我正在尝试在 Play 应用程序项目中使用 Gephi toolkit 但在构建项目时遇到了问题 起初 由于一些未解决的依赖关系 我无法构建该项目 作为来自的回答在此输入链接描述 https stackoverflow com questi
  • 短小精悍的 MS Access 更新和插入问题

    我正在使用 Dapper 来更新和插入 Access DB 代码正在运行 不会引发异常 但不会更新数据库中的值 下面是我的代码 sql Append UPDATE drugs repository SET drug name DrugNam
  • 来自波浪线 SVG 的连续波浪动画

    我有一个 SVG 它是用 Adob e Illustrator 构建的波浪线 我正在尝试向其添加连续的波浪状动画 我尝试过 vivus js 并且能够使绘制动画工作 但不能连续工作 我怎样才能开始这样的事情呢 任何答案都可以 无论是纯 CS
  • 我可以使用 -ObjC 以外的链接器标志链接适用于 iOS 的 GoogleMaps SDK

    我正在使用 GoogleMapsSDK 和 Parse 的框架 如果我一起使用它们 由于链接器标志 ObjC Parse 中的错误会触发需要 facebook 键 这是 Parse 论坛和 GoogleMaps 之外的其他框架上有详细记录的
  • 活动菜单项 - asp.net mvc3 母版页

    我一直在四处扫描 试图找到一个合适的解决方案 将 活动 当前 类分配给母版页中的菜单项 关于是否执行此客户端与服务器端 这条线被从中间分开 说实话 我对 JavaScript 和 MVC 都很陌生 所以我没有什么意见 我更愿意以 最干净 和
  • 获取当前页面 url 并更改操作

    我需要给出当前页面 url 并更改操作 url 之后我想在视图文件中回显该内容 我想在视图文件中执行这些操作 而不是控制器 你有什么主意吗 您可以通过以下方式获取当前页面的 url uri Zend Controller Front get
  • jquery.get() - 使用数据作为全局变量的问题

    好吧 我在网上读了很多资料 但仍然没有找到解决我的问题的方法 我需要使用 jquery 方法 get 检查文件的内容是 nok 还是空 我尝试过的事情之一 当然不起作用 但清楚地表明了我的想法 是 document ready functi
  • tabControl 中的关闭按钮

    有没有人可以告诉我如何在 C 中使用 tabControl 在每个选项卡中添加关闭按钮 我计划使用按钮 pic 来替换我的选项卡中的 x 谢谢 无需派生类 这里有一个简洁的片段 http www dotnetthoughts net imp