C#/VB.NET Winform程式自訂輸入游標

來源:互聯網
上載者:User

標籤:des   winform   http   使用   width   os   

本文轉載自真有意思網(http://www.zu14.cn)

三角貓 DeltaCat
摘要:C#/VB.NET Winform程式自訂輸入游標的實現,我們可以通過調用Windows 提供的一套對輸入游標進行控制的API進行操作......

Windows 提供了一套對輸入游標進行控制的API, 包括:CreateCaret,SetCaretPos,DestroyCaret,ShowCaret,HideCaret。這些API的定義如下:

[DllImport("user32.dll")]static extern bool CreateCaret(IntPtr hWnd, IntPtr hBitmap, int nWidth, int nHeight);[DllImport("user32.dll")]static extern bool ShowCaret(IntPtr hWnd);[DllImport("User32.dll")]static extern bool HideCaret(IntPtr hWnd);[DllImport("User32.dll")]static extern bool SetCaretPos(int x, int y);[DllImport("user32.dll")]static extern bool DestroyCaret();

上面的 CreateCaret 中的參數以此為

  • hWnd : 要自訂輸入游標的控制項的控制代碼
  • hBitmap : 如果使用圖片作為輸入游標,則是圖片的控制代碼;否則: 0 表示使用黑色的游標色,1表示使用灰色的游標色
  • nWidth:   游標的寬度
  • nHeight: 游標的高度

我們下面舉個例子,假設:我們有個輸入框textBox2,讓這個輸入的框的游標變成黑色的小塊

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Runtime.InteropServices;namespace CustomCaret{    /// <summary>    /// 自訂輸入游標的示範    ///  三角貓    /// 網址: http://www.zu14.cn/    /// 轉載請保留此資訊    /// </summary>    public partial class Form1 : Form    {        [DllImport("user32.dll")]        static extern bool CreateCaret(IntPtr hWnd, IntPtr hBitmap,              int nWidth, int nHeight);        [DllImport("user32.dll")]        static extern bool ShowCaret(IntPtr hWnd);        [DllImport("User32.dll")]        static extern bool HideCaret(IntPtr hWnd);        [DllImport("User32.dll")]        static extern bool SetCaretPos(int x, int y);        [DllImport("user32.dll")]        static extern bool DestroyCaret();        public Form1()        {            InitializeComponent();            //為輸入框綁定游標變化的處理事件             this.textBox2.GotFocus += new EventHandler(textBox2_GotFocus);            this.textBox2.LostFocus += new EventHandler(textBox2_LostFocus);        }        void textBox2_LostFocus(object sender, EventArgs e)        {            HideCaret(this.textBox2.Handle);            DestroyCaret();        }        void textBox2_GotFocus(object sender, EventArgs e)        {            CreateCaret(textBox2.Handle, IntPtr.Zero, 10, textBox2.Height);            ShowCaret(textBox2.Handle);        }    }}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.