標籤: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); } }}