1. 程式人生 > >C# WinForm獲取當前擁有焦點的控制元件 .

C# WinForm獲取當前擁有焦點的控制元件 .

//API宣告:獲取當前焦點控制元件控制代碼      

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)]

internal static extern IntPtr GetFocus();

        ///獲取 當前擁有焦點的控制元件
        private Control GetFocusedControl()
        {

            Control focusedControl = null;

            // To get hold of the focused control:

            IntPtr focusedHandle = GetFocus();

            if (focusedHandle != IntPtr.Zero)

                //focusedControl = Control.FromHandle(focusedHandle);

              focusedControl = Control.FromChildHandle(focusedHandle);

            return focusedControl ;

        }

說明:

Control.FromHandle 方法

返回當前與指定控制代碼關聯的控制元件。

一個 Control,它表示與指定控制代碼關聯的控制元件;如果找不到帶有指定控制代碼的控制元件,就返回 空引用

Control.FromChildHandle 方法

此方法沿著視窗控制代碼父級鏈向上搜尋,直到找到與控制元件關聯的控制代碼。此方法比 FromHandle 方法更可靠,因為它正確返回擁有多個控制代碼的控制元件。

對於使用者自定義控制元件,應當使用FromChildHandle 方法

相關推薦

C# WinForm獲取當前擁有焦點控制元件 .

//API宣告:獲取當前焦點控制元件控制代碼       [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)] internal static extern IntPtr

【MFC】-007 獲取當前focus的控制元件ID

【MFC】-007 獲取當前focus的控制元件ID 【MFC】-007 獲取當前focus的控制元件ID 1、由來 2、實現 1、由來   通過tab鍵切換控制元件輸入焦點時,需要根據不同

c#winform跨執行緒操作控制元件的一種方法,InvokeRequired

  在winform裡面如果有建立新執行緒的話,線上程裡面直接操作控制元件或修改控制元件的屬性是不允許的,雖然有辦法讓程式執行時忽略跨執行緒可能產生的問題,從而解決;但是從科學的角度看,該辦法並不可取,所以我就用了InvokeRequired的辦法解決跨執行緒操作問題。  

C# WinForm美化重繪listbox控制元件

繼承C#中的Listbox控制元件,重新美化了一下。美化樣式很多,以下只是其中一種。 包括  為Item增加動態效果;重寫了一個垂直滾動條控制元件。 ps:寫垂直滾動條控制元件前,看了一些網上的c#程式碼,可讀性太差,問題也多。所以從零寫了一個,設計思路是把一個滾動條分解

C#Winform超連結標籤(linkLabel)控制元件

linkLabel控制元件是一個超連結控制元件,用來展示超連結以及控制對單擊超連結後進行一些操作: 常用屬性: LinkColor:連結顏色屬性,控制標籤的連結部分的顏色。 LinkVisited:控制該超連結標籤是否被點選過(注意:並不是程式執行期間不寫任何程式碼點選該標籤後LinkVis

C# Winform 如何獲得窗體上控制元件相對於螢幕的位置

private Point LocationOnClient(Control c){ Point retval = new Point(0, 0); for (; c.Parent != null; c = c.

C#WinForm開發系列之CheckBox控制元件全選和取消全選以及checkedListBox的基礎使用介紹

一.研究了一下C# CheckBox控制元件的全選和反選問題,這裡研究了兩種全選的方法: 1.首先,使用3個panel控制元件和8個checkBox控制元件實現了反選和全選的實現介面,panel11的Dock屬性設為Top,panel12的Dock屬性設為Left,pane

c# winform獲取當前路徑exe程式的版本號

 通常軟體自動更新時,需要比較新版本與舊版本的版本號,如果新檔案的版本號比舊檔案高,就替換舊檔案。(版本號一般可以在Visual Studio的程式資訊裡定義)  如何取得當前exe程式的版本號呢

獲取Windows應用程式當前焦點控制元件控制代碼

由於GetFocus只能本身程序呼叫,所以必須呼叫AttachThreadInput函式附加執行緒 HWND wnd;//視窗控制代碼 wnd=GetForegroundWindow();//獲得當前啟用的視窗控制代碼 DWORD SelfThreadId=GetCurre

Jquery 偵聽鍵盤事件並獲取當前焦點控制元件ID

<script type="text/javascript">$(document).ready(function(){ $(document).keydown(function(event){  if(event.keyCode==13){   var id=$

C#獲取當前活動視窗控制代碼

c# 獲取當前活動視窗控制代碼,獲取視窗大小及位置 2018年04月26日 13:48:21 漂泊_人生 閱讀數:1889   需呼

C#、winform、wpf將類控制元件放進工具箱裡

有時我們需要將vs自帶的控制元件的某一些方法或屬性進行一些修改,我們通常會新建一個類來繼承它然後對它的方法或屬性進行修改,那麼我們如何將修改完成的控制元件類變成視覺化控制元件放到工具箱中便於使用呢? 很簡單,只要在修改完成的類上加上[ToolboxBitmap(typeof(控制元件))]然後再生成解決方案就

C# winform winApi 根據傳入handle 控制代碼獲取 其它視窗,如:使用中的子視窗、同級視窗等。

//根據傳入的視窗控制代碼,獲取到同級、頂級、低階的視窗,根據GetWindowCmd 傳入的不同獲取也不同,詳細看GetWindowCmd 類說明 [DllImport("user32.dll", SetLastError = true)] static exter

C# 影象處理: 獲取當前活動視窗控制代碼,獲取視窗大小及位置

C# 影象處理: 獲取當前活動視窗控制代碼,獲取視窗大小及位置 需呼叫API函式 需在開頭引入名稱空間 using System.Runtime.InteropServices; 獲取當前視窗控制代碼:GetForegroundWindow() [DllImport("us

如何在WINFORM中彈出一個又控制元件的對話方塊 能給個簡單的示範C#程式碼嗎 以及一些小問題 菜鳥想學

如何在WINFORM中彈出一個又控制元件的對話方塊  能給個簡單的示範C#程式碼嗎順便問問 這段程式碼是啥意思啊        private void btn_catchMe_Click(object sender, System.EventArgs e)        {

WinForm 利用Tag快速獲取已賦值控制元件的條件

一、\WindowsFormsApp1\Form1.Designer.cs namespace WindowsFormsApp1 { partial class Form1 { /// <summary> /// 必需的設計器

C#讓TopMost窗體彈出並置頂層但不獲取當前輸入焦點的終極辦法

為了使程式在彈出視窗時置頂層且不獲取系統輸入焦點,避免影響使用者當前的操作,來電通來電彈屏軟體嘗試過N多種辦法,例如:彈出前儲存當前焦點視窗控制代碼,彈出時因為使用TopMost系統預設將焦點交給了彈出視窗,彈出後再將焦點還給彈出前的焦點視窗控制代碼(C#讓窗體置頂彈出但

c# Winform 獲取麥克風音量 控制麥克風音量大小 (自用筆記未測試)

[DllImport("kernel32.dll", CharSet = CharSet.Auto)] static extern bool GetVolumeInformation(string Volume, StringBuilder VolumeName, uint VolumeNameSize

C# 基礎】— 解決 "winForm 引用 Adobe PDF Reader控制元件不顯示pdf 檔案" 問題

前言      公司的CS 終端需要顯示 PDF 檔案 ,在換用了“Adobe PDF Reader” 這個控制元件後,執行程式不報錯,窗體控制元件區顯示一片空白,PDF 檔案就是不顯示,這是怎麼回事呢? 正文 一 、原因一步步排除,先來看是不

linux下c語言獲取當前時間

keyword spa pre urn markdown view 技術分享 時間 tle 和時間有關的函數定義在頭文件”time.h”中 常用函數: time_t time(time_t *t); 函數說明:此函數會返回從公元 1970 年1 月1 日的UTC