c# 視窗控制代碼有關的常見問題

來源:互聯網
上載者:User

 

1、如何獲得一個視窗的控制代碼?
例如擷取視窗PictureBox控制項(其他控制項也可以)的控制代碼,
IntPtr handle = pictureBox.Handle;

2、注意:視窗建立和視窗建立完畢即有控制代碼完全是兩回事!!!

視窗建立時,視窗並沒有建立控制代碼,只有Application.Run(form)或者form.Show()之後才有控制代碼,即視窗只有顯示或者啟動訊息迴圈後才有控制代碼!如果建立form之後Form form = new Form(),主線程中調用form.Handle,如果控制代碼尚未建立,引用該屬性將強制建立控制代碼,對系統內的邏輯將產生致命的影響。

3、如何判斷一個視窗的控制代碼建立完畢?

利用IsHandleCreated 屬性:此屬性指示控制項是否有與他關聯的控制代碼,如果已經為控制項分配了控制代碼,則為 true;否則為 false。

4、一些屬性:
(1)、CreateControl :強制建立控制項,包括控制代碼和任何子控制項
(2)、CreateHandle :為該控制項建立控制代碼,

      通常,不應該直接調用 CreateHandle 方法。首選的方法是調用 CreateControl 方法,此方法在建立控制項時強製為該控制項及其子控制項建立一個控制代碼。給繼承者的說明 在衍生類別中重寫 CreateHandle 時,請確保調用了基類的 CreateHandle 方法,以便確保已建立該控制代碼。
(3)、DestroyHandle :毀壞與該控制項關聯的控制代碼
(4)、FromChildHandle :檢索包含指定控制代碼的控制項
(5)、FromHandle :返回當前與指定控制代碼關聯的控制項
(6)、Handle :擷取控制項綁定到的視窗控制代碼,Handle 屬性的值是 Windows HWND。如果控制代碼尚未建立,引用該屬性將強制建立控制代碼。
(7)、IsHandleCreated :指示控制項是否有與他關聯的控制代碼,如果已經為控制項分配了控制代碼,則為 true;否則為 false。
(8)、RecreateHandle :強製為控制項重新創製控制代碼
(9)、RecreatingHandle :指示當前是否在重創控制代碼

5.注意:
控制代碼是隨機量,兩次運行一般都會得到兩次不同的結果

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.