【问题标题】:.NET Compact Framework: Control over a Control OnMouseDown problem.NET Compact Framework:控制控件 OnMouseDown 问题
【发布时间】:2010-12-23 07:28:25
【问题描述】:

我正在开发一个带有 .Net Compact Framework 2.0 SP2C# 的 WinForm Windows Mobile 5.0 或更高版本

我有两个自定义控件(从 Control 继承的两个类)。如果我单击 control1 的特定位置,它会显示 control2(control2 是 control1 的控件)。换句话说,control2 是一个弹出菜单,它显示在 control1 之上。

Control2 有两个链接标签。如果用户点击其中一个,control2 会抛出一个事件,通知 control1 用户的选择。

在 control1 上,我覆盖了 OnMouseDown、OnMouseUP 和 OnMouseMove。

好的。在用户单击 control2 上的链接标签的情况下,我调试了代码。事件经过:

  • 在 control2 上,linklabel_click 方法。
  • 在 control1、control2_customEvent 上 方法。
  • 而且,这是我的问题,在 control1 上, OnMouseMove 方法和 OnMouseUp。

如果我点击 control2 而不点击链接标签,它也会抛出 control1.OnMouseMove 和 control1.OnMouseUp。

更新:

如果我点击 control2,为什么会在 control1 上触发 OnMouseMove 和 OnMouseUp?

谢谢!

【问题讨论】:

  • 它正在触发 OnMouseDown,因为您单击了鼠标。这真的是你要问的吗?
  • 不,我想问,如果我点击 Control2,为什么会在 Control1 上触发 OnMouse 事件?

标签: c# winforms compact-framework custom-controls


【解决方案1】:

没错。将鼠标放在控件 2 上。控件 2 消失,因此在现在可见的控件 (Control1) 上调用相应的 MouseUp。

为避免这种情况,请让两者都关闭:MouseUp 或 MouseDown,而不是两者的组合。

【讨论】:

  • 我_不懂你。我需要在 Control1 上定义 MouseUp 和 MouseDown。
  • 当您单击一个链接时,您会先按下鼠标,然后再抬起鼠标。问题是鼠标按下发生在控件 2 上(点击链接)。控制 2 THEN 消失,手控制 BACK 控制 1。然后鼠标向上事件发生。这现在落入控制编号 1。避免这种情况的方法是让所有“动作/提交”事件在鼠标向上或鼠标向下时发生。我自己更喜欢鼠标。尝试重写链接以改用 MouseUp。您可能必须编写自己的链接控件来执行此操作,因此请先尝试使用按钮并处理 MouseUP(而不是单击)。
猜你喜欢
  • 2010-09-28
  • 1970-01-01
  • 2011-01-02
  • 1970-01-01
  • 2010-12-26
  • 1970-01-01
  • 2020-12-09
  • 1970-01-01
  • 2011-08-23
相关资源
最近更新 更多