将父鼠标事件应用于子元素

2023-12-11

我正在制作小型 Windows 窗体应用程序。
我里面有 PictureBox(父)和 Label(子)。

父元素的鼠标事件工作正常,但子元素生成的鼠标事件不会反映在父元素上。光标也会变回默认值(箭头)。

是否有可能pass由子控件生成的事件,例如MouseEnter事件,发送至家长控制?

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        Card.MouseEnter += new EventHandler(Card_MouseEnter);
        Card.MouseLeave += new EventHandler(Card_MouseLeave);
        Card.MouseDown += new MouseEventHandler(this.Card_MouseDown);
        Card.MouseUp += new MouseEventHandler(this.Card_MouseUp);
    }

    void Card_MouseLeave(object sender, EventArgs e)
    {
        this.Card.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.card_bg));
        this.Rename("Running!");
    }

    void Card_MouseEnter(object sender, EventArgs e)
    {
        this.Card.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.card_hover_bg));
    }

    private void Card_MouseDown(object sender, EventArgs e)
    {
        this.Card.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.card_click_bg));
    }

    private void Card_MouseUp(object sender, EventArgs e)
    {
        this.Card.BackgroundImage = ((System.Drawing.Image)(Properties.Resources.card_hover_bg));
        this.Rename("Please Wait...");
    }

    private void CardName_MouseDown(object sender, MouseEventArgs e)
    {
        
    }

    void Rename(string args)
    {
        this.CardName.Text = args;
    }

    private void CardName_Click(object sender, EventArgs e)
    {

    }
}

enter image description here

elements in designer

  This is what I have        And this is what I want to achieve

            This is what I have                       This is what I want to achieve
    

第一个动画代表我现在拥有的,第二个动画是我需要实现的:)


当我制作 pictureBox1.Controls.Add(label1) label1 时 消失了,我尝试带到前面并改变颜色,但不能 做吧。如果您有任何想法,请告诉我我提供的代码 对我来说是可以理解的。再次感谢大家:)

您可能会在表单的 Load() 事件中使用这样的代码:

private void Form1_Load(object sender, EventArgs e)
{
    Point pt = CardName.Parent.PointToScreen(CardName.Location);
    Card.Controls.Add(CardName);
    CardName.Location = Card.PointToClient(pt);
}

这使标签保持在与原来相同的位置,但使图片框成为父级。

不知道你哪里出错了。这是一个展示其实际效果的示例。 PictureBox (Card) 和 Label (CardName) 均位于面板 (panel1) 内。单击按钮 2 可切换卡片的可见性。单击button1 使Card 成为CardName 的父级。您可以看到,一开始,只有 Card 切换可见性,但在单击 button1 并设置 Parent 后,两者一起切换可见性,因为 CardName 是 Card 的子级(它还会更改其 BackColor 以匹配其新 Parent 的 BackColor):

enter image description here

Code:

public partial class Form1 : Form
{

    private void button1_Click(object sender, EventArgs e)
    {
        Point pt = CardName.Parent.PointToScreen(CardName.Location);
        Card.Controls.Add(CardName);
        CardName.Location = Card.PointToClient(pt);
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Card.Visible = !Card.Visible;
    }

}

当我将鼠标移到标签上时,面板认为鼠标离开了它并上升 鼠标离开事件

下面是如何判断光标是否确实离开了面板的边界,而不是简单地在面板中输入子控件:

private void panel1_MouseEnter(object sender, EventArgs e)
{
    panel1.BackColor = Color.Red;
}

private void panel1_MouseLeave(object sender, EventArgs e)
{
    Point pt = panel1.PointToClient(Cursor.Position);
    if (!panel1.ClientRectangle.Contains(pt))
    {
        // we only get in here when the cursor leaves the BOUNDS of panel1
        panel1.BackColor = Control.DefaultBackColor;
    }            
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将父鼠标事件应用于子元素 的相关文章

  • C++ 编译器可以对结构中的元素重新排序吗

    C 编译器 特别是 g 可以对结构体的内部元素重新排序吗 我看到一些奇怪的行为 其中我有一个包含如下内容的结构 Struct SomeStruct long someLong long someLongArray 25 unsigned l
  • Web API 复杂参数属性均为 null

    我有一个 Web API 服务调用可以更新用户的首选项 不幸的是 当我从 jQuery ajax 调用中调用此 POST 方法时 请求参数对象的属性始终为 null 或默认值 而不是传入的值 如果我使用 REST 客户端调用相同的方法 我使
  • 在 IEnumerable 中查找相同的集合

    有一项任务要弄清楚如何更新表 DataTable 连接到一个database没有UPDATE陈述 我想出的例子是从邮箱中读取警报 该表将写入 Alerts 如果邮件正文包含单词 SUCCESS gt Alert 变为绿色 如果 FAIL g
  • 有了private修饰符,为什么可以直接访问其他对象中的成员呢?

    我有以下代码 class A private int x public A x 90 A A a1 A a2 a1 x 10 a2 x 20 int getX return this gt x 我知道代码可能很奇怪 但我不明白为什么a1 a
  • C# 从整数反序列化枚举

    是否可以从 C 中的 int 反序列化枚举 例如如果我有以下课程 class Employee public string Name get set public int EmployeeTypeID get set 我可以轻松地从 XML
  • C# 委托实例化与仅传递方法引用 [重复]

    这个问题在这里已经有答案了 我有一个简单的问题 与仅传递函数引用相比 实例化 C 委托有什么优势 我的意思是 Why do Thread t new Thread new ThreadStart SomeObject SomeMethod
  • 如何使用 Regsvr32 注册 .NET COM DLL?

    我有一个使用 COM DLL 的 VB6 应用程序 该DLL是用C 编写的 在 C 项目属性中 我检查了 Register for COM interop 选项 VB6 应用程序在我的开发机器上运行良好 C 代码完全遵循以下格式 CodeP
  • 在 C++ 中从另一个数组初始化结构内的数组[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions struc
  • 从动态服务器中抓取 html 列表数据

    哈喽大家好 抱歉提出转储问题 这是我最后的手段 我发誓我尝试了无数其他 Stackoverflow 问题 不同的框架等 但这些似乎没有帮助 我有以下问题 一个网站显示一个数据列表 前面有大量的 div li span 等标签 它是一个很大的
  • std::make_shared 作为默认参数无法编译

    在 Visual C 2008 和 2010 中 以下代码无法编译并出现以下错误 include
  • 在 4.x 内核上的 64 位内存中查找系统调用表

    我正在尝试编写一个简单的内核模块来查找 Linux 中的 sys call table 但遇到了一些麻烦 我在这里找到了 32 位 Linux 的基本指南 https memset wordpress com 2011 03 18 sysc
  • 使用 c++20 范围删除最后一个元素的最佳方法是什么

    有没有比反转两次更好的方法来使用 c 20 范围删除容器中的最后一个元素 include
  • 允许使用 AutoMapper 或类似工具映射动态类型吗?

    我已经开始使用https github com robconery massive https github com robconery massive对于一个项目 我想知道是否有任何映射工具可以支持动态到静态类型的映射 我以前使用过 Au
  • System.IndexOutOfRangeException:索引超出了数组的范围[重复]

    这个问题在这里已经有答案了 我正在开发一个 ATM 软件作为家庭作业 我想知道今天处理的交易总量 为此我编写了以下代码 public decimal getDayTransaction int accountid string date s
  • 隐式类型转换 - 编译器错误

    这个问题与this https stackoverflow com questions 3529449 can i make the ternary operator treat my class like a bool问题 下面的代码在V
  • 为 winforms ComboBox 中的单个项目着色?

    我遇到了一个困境 我有一个表单 其中包含许多组合框 其中包含在某些情况下可能无效 过时的信息 选项 项目 我不能简单地从项目中删除过时的信息 但我确实想在选项无效时为用户提供视觉线索 我正在考虑对项目进行着色 可能是红色 来指示它们是否无效
  • C++ 从文件中读取字符串

    我试图将字符串直接存储到一个文件中 以便稍后在 C 中读取 基本上 对于整个范围 我试图将带有字符串变量的对象数组存储在文件中 并且这些字符串变量将通过类似 object 的内容读取 0 字符串 然而 每次我尝试读取字符串变量时 系统都会给
  • 将 Web 场迁移到 ASP.NET 运行时版本 4,同时保持会话

    我们已将 Web 应用程序从 net 运行时 2 v 3 5 迁移到 net 运行时 4 v 4 5 我有一个部署问题 我们的 sessionstate 服务器是一个 stateserver 并在单独的服务器上运行框架 2 中的 aspne
  • 如何获取打印机设备上下文?

    我在 Windows 上尝试使用以下命令打印增强型图元文件 EMF 播放增强元文件 http msdn microsoft com en us library dd162800 28VS 85 29 aspx 我当前正在使用屏幕上窗口的设备
  • 在 C++11 中设置 std::thread 优先级的可移植方法

    在后 C 11 世界中设置 std thread 实例的优先级的正确方法是什么 是否有一种至少在 Windows 和 POSIX Linux 环境中有效的可移植方法 或者是获取句柄并使用可用于特定操作系统的任何本机调用的问题 无法通过 C

随机推荐

  • 如何使用 javascript 或 jquery 检查命名窗口是否存在

    这是场景 我在网站的页脚中有一个静态音频播放器 如果您转到另一个页面 音频播放器将重新加载 这不是问题 因为它是音频流 而不是静态文件 该页脚中还有一个链接 单击该链接将导致整个静态页脚消失 并弹出一个包含音频流的窗口 当然 问题是 如果有
  • 如何将 PIL `Image` 转换为 Django `File`?

    我正在尝试转换UploadedFile到 PILImage对象对其进行缩略图 然后转换 PILImage我的缩略图函数返回到的对象File目的 我怎样才能做到这一点 无需写回文件系统 然后通过 open 调用将文件带回内存的方法是使用 St
  • 标签不会显示在 d3 力图上

    我是 d3 的初学者 我发现特别有用且有趣的图表之一是 d3 力图 我一直在尝试它 但由于某种原因 我在这个特定的数据集上遇到了很多麻烦 具体来说 我一直在尝试让标签显示在我的 d3 力图上 但它就是行不通 这是我的代码
  • 需要帮助理解循环

    好吧 我想做的事情看起来相当简单 但它并没有按照我想要的方式工作 我知道我只是没有得到什么 本质上我正在尝试读取控制台输入 并将其分配给一个变量 然后我想检查该变量以查看它是否是有效数字 如果不是 我想告诉用户它是无效的 并重新开始循环 直
  • 变体双亚型超过最大值

    当我查看 变体数据类型 文档时 它说具有 double 子类型的变体可以支持最大 1 79769313486232E308 15 位数字 的正值 并且 当包含货币 小数和双精度值的变体变量超出其各自的范围时 会发生错误 但是 当我运行以下代
  • 如何将带有日期和时间 AM/PM 的字符串转换为 24 小时 mysql 时间戳格式

    我正在尝试从具有以下内容的字符串将日期和时间插入 mysql 日期时间字段日 月 年 时 分 秒 上午 下午 format 20 10 2014 05 39 PM 20 10 2014 05 39 AM 我知道 MYSQL 时间戳格式是 y
  • 针对 Access 数据库的 pyodbc 查询出现“可选功能未实现”错误

    对于任何可以提供帮助的人 提前表示感谢 我正在运行 64 位 Windows 10 64 位 Office 和 64 位 python 3 7 2 使用 pyodbc 我尝试执行如下所示的 Select 语句 SELECT FROM Eco
  • Flutter中如何动态生成多个Dropdown?

    我有 Java 背景 对 Flutter 很陌生 我陷入了需要动态创建多个下拉列表的场景 例如 有一项披萨优惠提供 2 个大披萨 2 个小披萨和 1 份饮料 因此 每当顾客选择任何披萨时 他 她必须选择一种口味 如果有 2 个大披萨 我需要
  • Chart.js v2:甜甜圈内甜甜圈之间的空间

    我正在使用 Chart js v2 5 0 我把甜甜圈放在甜甜圈里面 我想要两个甜甜圈之间的距离 A 变大而不影响同一甜甜圈内切片之间的距离 B 请看下图 目前我正在使用该房产边框宽度 然而 这也会影响宽度B 请看下面的代码 options
  • 为什么 akka 需要不可变消息

    或者换句话说 可变消息是否有正确的用途 我面临的用例是我想要处理基本上属于类型的对象 Map
  • SimpleHttpOperator Airflow,数据模板化

    我正在尝试正确渲染data里面一个SimpleHttpOperator在 Airflow 中 并通过我发送的配置dag run result SimpleHttpOperator task id schema detector http c
  • `%in%` 和 `==` 有什么区别?

    df lt structure list x 1 10 time c 0 5 0 5 1 2 3 0 5 0 5 1 2 3 Names c x time row names c NA 10L class data frame df df
  • 关于Struts2中的Action映射 - 没有映射Action

    我正在尝试运行我的 struts 应用程序 但收到错误操作未映射我已经看到名称空间是正确的 但仍然收到错误 struts xml
  • 响应式 2 列 CSS 布局,包括固定宽度的侧边栏?

    在任何地方都找不到这个问题的解决方案 我猜这一定是一个非常常见的问题 我正在创建一个带有侧边栏的响应式设计 其中侧边栏需要具有 200px 的固定宽度 并且高度未知 我怎样才能使主要内容区域占据所有剩余宽度 而不会出现任何异常行为 我最接近
  • 如果 scalatest 中的 FunSpec 的 afterEach 测试失败,如何确定

    在使用 FunSpec 的 scalatest 中 我有一些在 afterEach 中触发的代码 我想仅在测试失败时执行一些代码来获取屏幕截图 我所看到的几乎所有内容都试图通过将断言放入 try 块中来解决这个问题 这看起来很糟糕 Test
  • 如何等待回调函数返回?

    我正在使用phonegap 制作一个android 应用程序 我正在使用phonegap 的Storage api 来查询数据库 这是我的代码 function directPath src dest var db window openD
  • 自动调整文本输入框html大小

    我创建了一个输入 键入文本 框并使其自动调整大小非常简单 但是 有一些我似乎无法修复的故障 当我开始打字时 盒子缩小了一点 当我按退格键 或方向箭头 时 该框首先展开 然后在我继续键入时缩小 这是我的代码 function Expander
  • 反转生成的 vtable 函数顺序(具有相同名称的函数)

    如果使用 Visual Studio 2019 我使用两个具有相同名称但不同参数的虚拟方法来编译此 C 代码 struct MyStruct virtual void foo float 0 virtual void foo int 0 c
  • VBA中字符串的串联和最大长度,访问

    我在 access vba 中的字符串方面遇到了严重的问题 问题是 access 有时 将字符串的长度限制为大约 255 个字符 但是 根据字符串的构建方式 它可能会增长到超过 255 个字符 有一个工作代码的示例 Dim strReq a
  • 将父鼠标事件应用于子元素

    我正在制作小型 Windows 窗体应用程序 我里面有 PictureBox 父 和 Label 子 父元素的鼠标事件工作正常 但子元素生成的鼠标事件不会反映在父元素上 光标也会变回默认值 箭头 是否有可能pass由子控件生成的事件 例如M