winform学习之-----关于按键操作的一些小知识(如何获取焦点所在的当前控件)20160623

1、设置整个窗体keydown事件的时候,要设置keyPreview=true;

2、获取当前拥有焦点的控件:

关于这个问题,自己也是纠结死了,在网上搜了好多相关的问题答案,搜出的结果是:

//API声明:获取当前焦点控件句柄      
        [DllImport("user32.dll")]
        public static extern int GetFocus();
        ///获取 当前拥有焦点的控件
        private string GetFocusedControl()
        {

string focusedControl = null;
            IntPtr handle = (IntPtr)GetFocus();

if (handle == null)
                this.FindForm().KeyPreview = true;
            else
            {
                Control c = Control.FromHandle(handle);//这就是
                focusedControl =

c.Parent.TopLevelControl.Name.ToString();
            }

return focusedControl;

}

方法本身也没有问题,但是我的页面上用的当前控件刚好是引用的用户控件,使用此方法得出的结果是获得了原始的控件名字,不能用了。最好的获得方法就是: Control ctl = this.ActiveControl;

这个ctl.name,就是你要获取的当前焦点所在的控件了~

时间: 2024-10-01 03:54:14

winform学习之-----关于按键操作的一些小知识(如何获取焦点所在的当前控件)20160623的相关文章

c#中跨线程调用windows窗体控件 .我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来做这个问题,下面我将详细的介绍。

首先来看传统方法: public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { Thread thread = new Thread(ThreadFuntion); thread.IsBackground = true; thread.Start(); } private void Thread

js脚本操作mongo库小知识

(一) :如何在js文件里面切换一个新的mongo库? 我们都知道,使用下面的命令可以执行一个js脚本里面的内容: Java代码 收藏代码 mongo –quiet localhost:27021/db_name < test.js 虽然我们在执行一个js时,需要指定一个数据名,但不意味着,在这个js里面,就只能使用这个库操作,可以我的需求是,循环查询一个库的id字段,然后拿着这个id字段去另一个库匹配,如果在另一个库存在,可能我就要干某些操作,如果不存在,我可能又要干某些操作等等,MongoS

学习笔记:Java的一些基础小知识之JVM与GC

一.JVM是什么 Java虚拟机(英语:Java Virtual Machine,缩写为JVM),又名爪哇虚拟器,一种能够运行Java bytecode的虚拟机,以堆栈结构机器来进行实做.最早由太阳微系统所研发并实现第一个实现版本,是Java平台的一部份,能够运行以Java语言写作的软件程序. Java虚拟机有自己完善的硬体架构,如处理器.堆栈.寄存器等,还具有相应的指令系统.JVM屏蔽了与具体操作系统平台相关的信息,使得Java程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多

学习shell之前你不得不了解的小知识

1.!!命令                   # 表示上一条输出history |grep 23         #表示历史记录中的第23条!vim                     #上一条vim记录alias  music='cat test'  #表示别名unalias music             #表示取消别名*                         #匹配一个或零个或多个字符?                        #匹配一个字符|         

VB.NET自动操作其他程序(4)--读取、设置其他软件listview控件的内容

4.3.读取其他软件listview控件的内容 4.3.0.根据窗口句柄,获取进程Id,打开并插入进程,申请代码的内存区,返回申请到的虚拟内存首地址        Dim processId As Integer         '进程pid           hwnd = FindWindow("#32770", "Windows 任务管理器")       '获取任务管理器窗口句柄,注释By Lyh         hwnd = FindWindowEx(hw

WinForm用户自定义控件,在主窗体加载时出现闪烁;调用用户控件出现闪烁,需要鼠标才能够显示

转载自:http://www.dotblogs.com.tw/rainmaker/archive/2012/02/22/69811.aspx 解决方案: 在调用用户控件的窗体里面添加一下代码: protected override CreateParams CreateParams { get { CreateParams cp = base.CreateParams; cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED return cp

菜鸡学习笔记--WinForm控件的异步调用

在一WinForm项目中,除了窗口类之外的其他类要直接使用窗口控件是比较困难的,因为控件对象不是静态的(static),但是又不能去Designer去修改空间的属性.而且还有需要控件值自动改变的情况.此时需要运用到事件(Event)的使用 例: 在项目适当位置任意声明一个委托,参数类型与控件一致 public delegate void TestDelegate(string msg); 声明事件,并且定义事件访问器: public event TestDelegate TestEvent{ {

WP8.1学习系列(第十章)——中心控件Hub设计指南

Windows Phone 应用商店应用中的中心控件指南 在本文中 说明 示例 用法指南 设计指南 相关主题 重要的 API Hub (XAML) HubSection (XAML) 说明 中心控件(在手机上,仅适用于按纵向使用)显示一系列可以来回平移的区域.它是应用的全屏容器和导航模型. 中心(以前称为全景)体验是本机 Windows Phone 外观的一区域.与旨在适合手机屏幕边界的应用不同,中心应用通过使用超出屏幕边界的水平虚拟宽画布提供了一个查看控件.数据和服务的独特方式.在 Windo

Duilib 学习源码系列1-创建控件

好了,昨天研究出了为什么加载xml结束以后我在自己新建一个控件位置不能调整,原来要先add才能调属性. 本来这个是昨天的任务,虽然这块内容是前天就看完的,权当边写边复习吧. 上一篇提到 <VerticalLayout name="window" bkcolor="#FFFFFFFF" bkcolor2="#FFAAAAA0" bkcolor3="#00000000"> 代表了一个控件字符串; 上次忘记说了 及时经过