.net-C#winform如何获取全局其它窗口中的控件位置和大小

问题描述

C#winform如何获取全局其它窗口中的控件位置和大小
winform,程序运行后
希望用户在任何其它窗口中点击鼠标时,记录鼠标点击的位置,如果点击的是个textbox,就记录那个textbox的位置和大小
捕获鼠标点击已经用全局钩子实现,控件那个需求完全没思路,求思路

解决方案

首先自定义一个鼠标点击的参数类 参数类包含了点击控件的对象(位置大小) 包含了鼠标的状态(坐标)
public class MouseEventArgsParameter
{
public MouseEventArgsParameter(MouseEventArgs args Control control)
{
MouseEventArgs = args;
Control = control;
}
public MouseEventArgs MouseEventArgs { get; set; }
public Control Control { get; set; }
}

在窗体增加LoadLocation方法用来动态为窗口所有的控件增加鼠标点击的事件
public void LoadLocation()
{
foreach (Control control in this.Controls)
{
control.MouseClick += new MouseEventHandler(control_MouseClick);
}
}
这里是鼠标点击的事件然后重新自定义一个鼠标的事件将控件和鼠标的属性变成一个对象以便使用
void control_MouseClick(object sender MouseEventArgs e)
{
MouseClick_Handler(new MouseEventArgsParameter(e (Control)sender));
}
public void MouseClick_Handler(MouseEventArgsParameter args)
{
MessageBox.Show(string.Format(""所点击的控件名称:{0} 位置:{1} 大小:{2}"" args.Control.Name("" + args.Control.Location.X + "" + args.Control.Location.Y + "")""宽"" + args.Control.Size.Width + "" 高"" + args.Control.Size.Height));
}

时间: 2025-01-19 11:43:12

.net-C#winform如何获取全局其它窗口中的控件位置和大小的相关文章

获取treeview HierarchicalDataTemplate模板中的控件对象

问题描述 我想获取HierarchicalDataTemplate模板中的控件对象,如下name="image2"的Image对象<TreeViewName="personTree"Width="299"TreeViewItem.Selected="treeView1_Selected"TreeViewItem.Unselected="treeView1_UnSelected"Height="

Android获取dialog自定义布局中的控件

public class PopUpDialog extends Dialog { Context context; private View customView; public PopUpDialog(Context context) { super(context); this.context = context; // TODO Auto-generated constructor stub } public PopUpDialog(Context context, int theme)

请教怎么在类中调用主窗口中的控件?

问题描述 主窗体控件不是静态的,要通过对象调用,可是主窗体对象只在程序开始实例一个.那只能建个函数传过去了?好不舒服..有没有简洁点的方法啊?? 解决方案 解决方案二:别直接调用,可以通过委托或者方法去控制解决方案三:引用1楼bdmh的回复: 别直接调用,可以通过委托或者方法去控制 什么意思?能具体点嘛?解决方案四:其实你这个...我很无解,不管你怎么调..你都要获取这个对象才能调用吧?就算用委托,也要在主窗体先实例化一个拥有委托的对象吧?..没有对象..飞起来调==?..还是我能力有限...解

如何获取GridView的EmptyDataTemplate中的控件

网上看了很多用Controls[0].Controls[0]的方法,也很有道理,不过在有数据的情况写可能出出现 Null异常, 这时你可以试试下面的方法,我感觉非常好用. protected void GridViewSearchResult_RowCreated(object sender, GridViewRowEventArgs e) { if (e.Row.RowType == DataControlRowType.EmptyDataRow) { ((Label)(e.Row.FindC

关闭窗口-C# winform点击第二个窗口中的按钮,关闭所有窗口

问题描述 C# winform点击第二个窗口中的按钮,关闭所有窗口 Winform中,建立了两个form,如何在第二个窗口中,点击按钮,然后关闭整个程序. 解决方案 Application.Exit(); 解决方案二: c#点击按钮跳转到另一窗口后将本窗口关闭 解决方案三: System.Environment.Exit(0)

C#里winform最大化时,如何使里面的控件按比例变化?

问题描述 用ANCHOR和DOCK我试过了,效果不太好,控件的大小变不了,都LEFT,TOP锚定的话,右边会空一大截很难看,上下左右的话就重叠了 解决方案 解决方案二:上面的上下左右,下面的下左右.这样下面的高度不变,上面的会占用剩余高度.你可以看一下,很多软件布局都是这样的,总一块是固定高度或固定宽度.如果你说一定要上下等比,那你可以用:TableLayoutPanel来布局.解决方案三:还是会重叠啊解决方案四:添加resize事件,然后自定义控件的大小解决方案五:在resize时间里通过计算

html-ASP中HTML控件,UI层获取文本值问题

问题描述 ASP中HTML控件,UI层获取文本值问题 asp:code 姓名 年龄 住址 备注 Cs:code public partial class AddUserInfo : System.Web.UI.Page { UserInfoManager userinfoManager = new UserInfoManager(); protected string userName; protected int age; protected string address; protected

WPF中TreeView控件在选中节点后如何获取其父节点,再父节点信息

问题描述 winform中TreeView控件中,在选中某个节点后,可以用e.Node.Parent来获取其父节点信息,再父节点可以用e.Node.Parent.Parent,而在WPF中此方法似乎不行,如,在选中某个节点后TreeViewItemitem=(TreeViewItem)treeCourseInfo.SelectedItem;可以获取该节点的信息if(item.Header.ToString()=="科目信息",但是不知该如何获取其父节点,再父节点.....信息,各位有谁

wp8-VS2015中WP8.1和WIN10通用应用Xaml的设计窗口无法显示控件!

问题描述 VS2015中WP8.1和WIN10通用应用Xaml的设计窗口无法显示控件! 已经重装2次没用求支招啊111 解决方案 看看是不是没有安装win8.1 wp8.1工具