c#window窗体应用程序中一个控件,如果鼠标点击控件,怎么获得此时鼠标点击处的屏幕坐标

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c#window窗体应用程序中一个控件,如果鼠标点击控件,怎么获得此时鼠标点击处的屏幕坐标相关的知识,希望对你有一定的参考价值。

参考技术A 通过鼠标事件(mouse_down mouse_up mouse_over mouse_click等)获取事件源,然后通过这个事件源可获取鼠标的坐标(x,y)追问

在from窗体下这样可以的,但要把鼠标放到一个控件上的话,这些事件根本就不响应啊

参考技术B PointToScreen(Point point) 从控件里点击坐标系转换为屏幕坐标系。 记得加上控件在窗体里的坐标本回答被提问者采纳

单击控件后,C#Windows窗体/用户控件不能用鼠标滚轮滚动[复制]

这个问题在这里已有答案:

我在Visual Studio 2013中使用C#构建了一个Windows窗体,它有一个实际的Form.cs.我在Form.cs中有一个面板,我根据需要对接/填充UserControl.cs文件。 UserControls是我用作实际的“用户输入表单”,供用户填写控件/字段并提交所需数据。除了使用鼠标滚轮滚动外,我完全/正确地工作。

这是我试图找到解决方案的典型场景;当用户首先导航到其中一个UserControl时,他们可以单击窗口的空白部分,它将允许使用右侧的垂直滚动条或使用鼠标滚轮进行滚动。但是,当用户单击UserControl中的任何控件,文本框,列表框,组合框等时,鼠标滚动将不再滚动窗口。我无法通过将焦点从控件/字段移动到UserControls背景或其他位置来找到如何允许鼠标滚轮滚动,以使用户鼠标滚轮停止滚动窗口。

我必须明确的一件事是UserControls确实有垂直滚动条,因此用户可以单击滚动条向上/向下移动窗口,因此这部分不是问题。我刚刚找不到允许用户在点击UserControl“表单”中的任何控件/字段后使用鼠标滚轮滚动的方法。如何将焦点从任何控件/字段移到UserControls背景或其他位置以允许鼠标滚轮滚动窗口/窗体/ UserControl?

编辑:我在Form.cs和停靠面板上将AutoScroll设置为False,但是,我在每个UserControl上将AutoScroll设置为True。这允许右手滚动条渲染和使用,但这似乎对鼠标滚动没有任何影响。我尝试过设置AutoScroll的所有组合都没有成功。

编辑(2):* *表格 - panel1 ^ UserControl1.cs ^ UserControl2.cs ^ UserControl3.cs ^ UserControl4.cs ^ UserControl5.cs

每个UserControl都会根据用户选项应用于/在panel1上呈现。每个UserControl在右侧都有垂直滚动条渲染。用户单击/选择任何控件(文本框,列表框,组合框)以输入/选择数据后,鼠标滚动功能无效。无论点击什么控件并具有焦点,焦点都不会移动到允许鼠标滚轮滚动窗口。

答案

这不是我认为最理想的答案,但您可以将Form.Focus();添加到表单中每个Control的Scroll事件中。

以上是关于c#window窗体应用程序中一个控件,如果鼠标点击控件,怎么获得此时鼠标点击处的屏幕坐标的主要内容,如果未能解决你的问题,请参考以下文章

鼠标滚轮事件与悬停控件一起使用

获取鼠标点相对于各屏幕窗体和当前控件的位置

如何在 Windows 窗体应用程序中显示 MFC 控件?

WPF C# 实现鼠标穿透窗体

C# mouseUp事件

wpf 一个窗体中点击空白部分关闭另一个窗体