
C#winform如何實現文本編輯框(TextBox)的Hint提示文字效果
private const int EM_SETCUEBANNER = 0x1501;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wParam, string lParam);
private string hint = string.Empty;
public string Hint
{
get { return hint; }
set
{
hint = value;
SendMessage(textBox1.Handle, EM_SETCUEBANNER, (int)IntPtr.Zero, Hint);
}
}
那如何實現 按 CTRL+Q 自動把光標定位到當前文本框呢
當前了你可使用KeyDown事件,若是界面上有100個控件那麼全部的控件所有關聯這個KEYDOWN事件,若是你不煩的話。
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.Q)
{
textBox1.Focus();
}
}
最明智的辦法是使用下面的方法重寫,這樣不論光標焦點在哪一個控件上只要按下CTRL+Q 光標就定位到當前這個文本中了
//重寫ProcessCmdKey的方法
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
int WM_KEYDOWN = 256;
int WM_SYSKEYDOWN = 260;
if (msg.Msg == WM_KEYDOWN | msg.Msg == WM_SYSKEYDOWN)
{
switch (keyData)
{
case Keys.Control|Keys.Q:
textBox1.Focus();
break;
}
}
return false;
}