- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在使用 Forms 集成的 WPF 应用程序中为 NotifyIcon
设置了以下事件处理程序:
void MyNotifyIcon_MouseDown(Object sender, System.Windows.Forms.MouseEventArgs e)
{
ShowSettingsWindow();
}
但是,e.Location = {X=0,Y=0}
总是。有什么办法可以做到这一点吗?
更新
奇怪的是,人们投票决定关闭这个问题并投反对票。但是,在 WPF 应用程序的 App.xaml.cs
文件中创建一个新的 NotifyIcon
并亲自尝试一下,这显然是行不通的,而且非常简单。
更新
正如 Hans 所指出的,这是设计使然。它仍然没有回答可能的解决方法是什么的问题。此外,这是一个糟糕的设计,因为:
此事件发生在 MouseDown 上,这意味着单击时它应该具有鼠标位置的某些上下文,以便它发生。 NotifyIcon 的 WmMouseDown 处理程序确实具有 ref Message m
属性 which other controls use to establish the correct position ,但是它似乎忽略了这个属性并且没有在事件处理程序中使用它。我将其称为主要错误。
自事后剖析以来,获取 MouseDown
内的 Cursor.Position
不会为您提供 MouseDown 在单击托盘图标。在您单击它和引发您可以进一步移动鼠标的事件之间有一个小的延迟。您可以使用一个应用程序自己对此进行测试,该应用程序通过在单击托盘并获取其在 MouseDown
处理程序中的位置后快速移动鼠标来获取鼠标坐标。一种解决方法(它回答了我的问题)是使用 Cursor.Position
保存每个 MouseMove
的最后一个位置,并使用 MouseDown
上的最后一个位置> 作为单击图标的位置。 所有这些都清楚地表明了鼠标位置对于事件实际发生时间的需求。
显然,我是唯一关心 .NET 中这些不一致的人,而许多人似乎容忍它们或不能正确理解它们的含义。
最佳答案
它并不理想,因为 framework is designed to not send proper mouse event arguments正如 Hans 指出的那样,但一种解决方法是使用 Cursor.Position
保存每个 MouseMove
的最后一个位置,并将 MouseDown
上的最后一个位置用作上下文点击图标的位置。
关于c# - NotifyIcon MouseDown MouseEventArgs 没有位置数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29957470/
我一直在关注 Create and use ASP.NET Core Razor components 我对这部分有疑问 @Title @ChildContent
我有一个图片框,一旦在其中单击鼠标,我需要获取框内鼠标位置的值。我可以使用以下代码执行此操作: public void pictureBox1_MouseClick(object sender, Mo
我目前正在开发我的一个项目,它是一个类似于 MSPaint 的 WPF 应用程序。但是,我不使用铅笔工具或类似的工具,而是使用对象(矩形、圆形、三角形等)进行绘画。我使用 Prism 和 MVVM 模
我在我的 WPF 应用程序中使用 RX 来跟踪鼠标移动。 与使用 RX 示例方法时相比,当直接订阅鼠标移动事件时,我在 MouseEventArgs 中获得了不同的来源。 为了便于说明,这里有一个简单
Windows 窗体应用程序: 这让我困惑了好几个小时。我正在尝试做的是,当我按住标签时,它会移动表格。 private void label1_MouseUp(object sender,
我看到了这个question我有同样的问题,但我在 View 模型中有命令。我可以像 CommandParameter 那样传递 MouseEventargs 吗?如何传递? acb:CommandB
我有一个包含很多很多控件的表单。我需要检测鼠标是向下还是向上。大多数时候,我没有 MouseEventArgs。 没有 mouseEventArgs 是否有一种快速简便的方法来判断鼠标是否按下? 是否
我确定这有一个直接的答案,但我似乎无法弄明白。 我正在尝试使用我的 mousehover 事件添加一个 tooltip。过去,我使用过 mousemove 事件,但不幸的是,这意味着 tooltip
我正在尝试制作这种扩展方法。强制转换时出现错误,提示“无法将类型 T 转换为 MouseEventArgs”。难道我不能向上转换对象(因为 MouseEventArgs : InputEventArg
您好,我有一个 MDI 应用程序,其中一个子窗口处理许多鼠标事件。在我尝试从 e.Delta(鼠标定位器数量)获取值之前,一切都没有问题(e.Button、e.Location 等)。 e.Delta
我在使用 Forms 集成的 WPF 应用程序中为 NotifyIcon 设置了以下事件处理程序: void MyNotifyIcon_MouseDown(Object sender, System.
我确信这是一个 super 简单的过程,但我正在开发 C# UWP 应用程序并试图制作可拖动的用户控件,但在我的鼠标事件中我收到以下错误: CS1061“MouseEventArgs”不包含“GetP
我会尝试一点 Shapemoving 并编写以下应用程序:
我有一个矩形,当我点击它时,它会显示到另一个 View 我正在使用 Rectangle.Contains(e.Location)(e 是 MouseEventArgs)这在 SizeMode 正常时没
我有一种方法可以检测 visual studio 通过双击表单产生的左键单击事件。 private void pictureBox1_Click(object sender, EventArgs e)
我是一名优秀的程序员,十分优秀!