如何将单击事件处理程序分配给绘制矩形的一部分?

2023-12-13

想象一下我使用 .NET 图形类来绘制一个矩形。

然后,我如何分配一个事件,以便如果用户单击某个点或某个点范围,就会发生某些事情(单击事件处理程序)?

我当时正在阅读 CLR via C# 和事件部分,我从所读到的内容中想到了这个场景。

这样的代码示例确实可以提高我对 C#/.NET 中事件的理解。

Thanks


您可以指定 Click 事件处理程序来控制将使用哪个表面来绘制矩形。 这是一个小例子: 当您单击矩形内部的表单时,它将用红色边框绘制,当您单击矩形外部时,它将用黑色边框绘制。

public partial class Form1 : Form
{
    private Rectangle rect;
    private Pen pen = Pens.Black;

    public Form1()
    {
        InitializeComponent();
        rect = new Rectangle(10, 10, Width - 30, Height - 60);
        Click += Form1_Click;
    }

    protected override void OnPaint(PaintEventArgs e) 
    {
        base.OnPaint(e);
        e.Graphics.DrawRectangle(pen, rect);
    }

    void Form1_Click(object sender, EventArgs e)
    {
        Point cursorPos = this.PointToClient(Cursor.Position);
        if (rect.Contains(cursorPos)) 
        {
            pen = Pens.Red;
        }
        else
        {
            pen = Pens.Black;
        }
        Invalidate();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将单击事件处理程序分配给绘制矩形的一部分? 的相关文章

  • 为什么 C# Array.BinarySearch 这么快?

    我已经实施了一个很简单用于在整数数组中查找整数的 C 中的 binarySearch 实现 二分查找 static int binarySearch int arr int i int low 0 high arr Length 1 mid
  • WCF RIA 服务 - 加载多个实体

    我正在寻找一种模式来解决以下问题 我认为这很常见 我正在使用 WCF RIA 服务在初始加载时将多个实体返回给客户端 我希望两个实体异步加载 以免锁定 UI 并且我想利用 RIA 服务来执行此操作 我的解决方案如下 似乎有效 这种方法会遇到
  • 为什么两个不同的 Base64 字符串的转换会返回相等的字节数组?

    我想知道为什么从 base64 字符串转换会为不同的字符串返回相同的字节数组 const string s1 dg const string s2 dq byte a1 Convert FromBase64String s1 byte a2
  • 秒表有最长运行时间吗?

    多久可以Stopwatch在 NET 中运行 如果达到该限制 它会回绕到负数还是从 0 重新开始 Stopwatch Elapsed返回一个TimeSpan From MSDN https learn microsoft com en us
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 堆栈溢出:堆栈空间中重复的临时分配?

    struct MemBlock char mem 1024 MemBlock operator const MemBlock b const return MemBlock global void foo int step 0 if ste
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • 将多个表映射到实体框架中的单个实体类

    我正在开发一个旧数据库 该数据库有 2 个具有 1 1 关系的表 目前 我为每个定义的表定义了一种类型 1Test 1Result 我想将这些特定的表合并到一个类中 当前的类型如下所示 public class Result public
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 如何在 C 中调用采用匿名结构的函数?

    如何在 C 中调用采用匿名结构的函数 比如这个函数 void func struct int x p printf i n p x 当提供原型的函数声明在范围内时 调用该函数的参数必须具有与原型中声明的类型兼容的类型 其中 兼容 具有标准定
  • 如何使用 C# / .Net 将文件列表从 AWS S3 下载到我的设备?

    我希望下载存储在 S3 中的多个图像 但目前如果我只能下载一个就足够了 我有对象路径的信息 当我运行以下代码时 出现此错误 遇到错误 消息 读取对象时 访问被拒绝 我首先做一个亚马逊S3客户端基于我的密钥和访问配置的对象连接到服务器 然后创
  • cmake 将标头包含到每个源文件中

    其实我有一个简单的问题 但找不到答案 也许你可以给我指一个副本 所以 问题是 是否可以告诉 cmake 指示编译器在每个源文件的开头自动包含一些头文件 这样就不需要放置 include foo h 了 谢谢 CMake 没有针对此特定用例的
  • 如何防止用户控件表单在 C# 中处理键盘输入(箭头键)

    我的用户控件包含其他可以选择的控件 我想实现使用箭头键导航子控件的方法 问题是家长控制拦截箭头键并使用它来滚动其视图什么是我想避免的事情 我想自己解决控制内容的导航问题 我如何控制由箭头键引起的标准行为 提前致谢 MTH 这通常是通过重写
  • 使用.NET技术录制屏幕视频[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有没有一种方法可以使用 NET 技术来录制屏幕 无论是桌面还是窗口 我的目标是免费的 我喜欢小型 低

随机推荐

  • JW Player 无法在 ie9 和 ie10 中播放 MP4 视频格式的视频

    我在我的网页中实现了 jwplayer 6player 我可以在 ie9 和 ie10 浏览器中的 jw 播放器中播放 mp3 文件 但我无法在两个浏览器中播放 MP4 文件 但在 ie8 中工作正常 下面是我使用的代码
  • 流畅的 JavaScript 动画

    这是一些代码
  • 如何在 Matlab 中选择子矩阵(不以任何特定模式)

    如何在Matlab中选择子矩阵 不是任何模式 例如 对于一个大小为10 10的矩阵 如何选择由第1 2 9行和第4 6列交集组成的子矩阵 感谢您提供任何有用的答案 TLDR 简答 至于你的问题 假设你有一个任意的 10 10 矩阵A 提取所
  • 当其他应用程序启动时,手电筒会关闭。安卓

    我正在使用 Widget 开发手电筒应用程序 当我在小部件手电筒打开的情况下打开手电筒时 当我启动某些应用程序时 手电筒会关闭 为什么会发生这种情况 为什么我的手电筒无法在后台运行 我怎样才能防止这种情况发生 我希望手电筒只能由用户而不是系
  • 如何在不共享敏感信息的情况下从github推送和拉取?污迹和清洁?

    当我从 github 拉取到服务器存储库时 我想避免覆盖某些文件中的本地化敏感信息 例如 config php 注意 它不是开源类型的存储库 我完全控制存储库 我是唯一的用户 它是私有的 但最重要的是 它基于一个开源框架 可能会改变配置文件
  • 在 VS 2010 C# 项目之间共享 .cs 文件

    我想知道两个独立的 C Windows 项目 在两个独立的解决方案中 是否可以共享一个具有共享定义的 cs 文件 如果是这样 那又如何呢 附言 第一个项目是 ASP NET Web 应用程序 第二个项目是 C Windows 服务 作为 W
  • display:none 是否仍使用渲染性能

    可以说我有这样的标记 div style display none div 浏览器是否仍然使用资源来加载 Flash 对象 或者是否会延迟到调用 javascript 来切换 Flash 对象 dislplay block 现在请记住 我不
  • .NET Core 2.1 HttpClient 不返回预期值

    我正在使用一个接口从这个 url 调用 apihttp localhost 55260 api Accounts GetList 这是控制器的引用 HttpGet Route GetList AllowAnonymous public Ac
  • 单击按钮即可删除/添加类

    我希望能够从 div 中删除一个类 并通过单击按钮添加另一个类 但我无法让它发挥作用 div class hiddennav displaynone ul ul div div class fixednav div class showna
  • 将 Dataframe 传递给 Apply 函数 pandas 作为参数

    可以将 DataFrame 传递给apply像这样的功能 df2 df1 apply func axis 1 args df2 def func df1 df2 do stuff in df2 for each row of df1 ret
  • 在 Athena Aws 中连接行值

    我有 2 个列 可以说 id 和值 我想连接按 id col 分组的值 例如 我有 ID值 1 个 1b 2个 2b 我需要输出为 ID值 1a b 2a b 您可以使用array agg随后是一个array join select id
  • 如何在 Flutter 中使用查询访问 Cloud Firestore 的数组索引?

    我有田地users在文档中 该字段包含数组中的两个元素 我必须检查该数组中的特定两个值 首先 我用了array contains为此方法两次 但出现错误 如何访问 Cloud Firestore 中数组字段的索引 下面的代码是我的方法 但它
  • 存在寄存器溢出机制时,为什么会因为寄存器使用过多而无法启动内核呢?

    1 内核什么时候开始将寄存器溢出到本地内存 2 当没有足够的寄存器时 CUDA运行时如何决定不启动内核并抛出太多资源请求错误 多少个寄存器足以启动内核 3 既然存在寄存器溢出机制 即使没有足够的寄存器 难道不应该启动所有CUDA内核吗 1
  • 将信号连接到插槽会立即导致信号被发射

    我正在用 python 3 3 3 和 pyqt5 编写一个程序 我已经连接了很多信号和插槽 没有任何问题 这导致了一个问题 我的代码如下 def populateVendorAndModelComboBoxes self vendorCo
  • java 中的错误填充异常(RSA 解密)

    在解密 java 中的 RSA Base64 编码字符串时 我遇到一些问题 RSA 加密字符串是由 c Net 生成的 实际上 我使用java创建了公钥和私钥 然后我将公钥交换给 Net Team 他们使用公钥加密了一个字符串RSACryp
  • 复制模板电子表格脚本时,可在 Google 电子表格脚本中安装 onEdit 触发器

    我有一个复制模板电子表格的脚本 A 该电子表格模板中有一个脚本 B 模板电子表格和脚本已成功以编程方式复制并与其他人共享 模板脚本需要使用 onEdit 触发器来修改第三个电子表格 模板电子表格副本中的编辑将同步到第三个电子表格 简单触发器
  • Jquery可排序更新事件只能调用一次吗?

    我正在尝试使用 Jquery 和 Php 进行类别更改 我对此没有问题 我的问题是 当调用更新事件时 它返回 2 个结果 拖动父项有 1 个结果 删除父项有 1 个结果 我只想拨打失联父母的身份证 这是我的脚本 gallery ul sor
  • 如何使用 Cucumber 激活 Spring Boot 配置文件

    我正在寻找一种好方法来激活我的黄瓜测试的弹簧配置文件 黄瓜测试需要使用标记为以下内容的服务的存根版本 Profile test Component class FooServiceStub extends FooService 常规服务如下
  • 检查 pickle 转储的依赖关系

    假设我写了下面的代码 import pickle def foo return foo def bar return bar foo pickle dump bar open bar bin wb 此时 我有一个二进制转储 当然不依赖于fo
  • 如何将单击事件处理程序分配给绘制矩形的一部分?

    想象一下我使用 NET 图形类来绘制一个矩形 然后 我如何分配一个事件 以便如果用户单击某个点或某个点范围 就会发生某些事情 单击事件处理程序 我当时正在阅读 CLR via C 和事件部分 我从所读到的内容中想到了这个场景 这样的代码示例