Control.IsInputKey(Keys) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
判斷指定的按鍵是標準輸入按鍵或需要前置處理的特殊按鍵。
protected:
virtual bool IsInputKey(System::Windows::Forms::Keys keyData);
protected virtual bool IsInputKey (System.Windows.Forms.Keys keyData);
abstract member IsInputKey : System.Windows.Forms.Keys -> bool
override this.IsInputKey : System.Windows.Forms.Keys -> bool
Protected Overridable Function IsInputKey (keyData As Keys) As Boolean
參數
傳回
如果指定的按鍵是標準輸入按鍵,則為 true
,否則為 false
。
範例
下列程式碼範例示範如何覆寫 IsInputKey 控制項的 TextBox 方法。 在此範例中,類別會 TabTextBox
處理 TAB 鍵。
TabTextBox
當 具有焦點且使用者按下 TAB 鍵時,會在文字插入點新增 TAB 鍵四個空格,並取代任何選取的文字。 根據預設,控制項會將 TextBox 輸入焦點移至下一個控制項,以處理 TAB 鍵。 在此情況下,keypress 永遠不會到達 OnKeyDown 方法覆寫。 為避免此預設行為,當使用者按下 TAB 鍵時,方法 IsInputKey 覆寫會 true
傳回。 對於所有其他按鍵,方法 IsInputKey 覆寫會傳回呼叫 方法基類版本的結果。
using System.Windows.Forms;
public class Form1 : Form
{
public Form1()
{
FlowLayoutPanel panel = new FlowLayoutPanel();
TabTextBox tabTextBox1 = new TabTextBox();
tabTextBox1.Text = "TabTextBox";
panel.Controls.Add(tabTextBox1);
TextBox textBox1 = new TextBox();
textBox1.Text = "Normal TextBox";
panel.Controls.Add(textBox1);
this.Controls.Add(panel);
}
}
class TabTextBox : TextBox
{
protected override bool IsInputKey(Keys keyData)
{
if (keyData == Keys.Tab)
{
return true;
}
else
{
return base.IsInputKey(keyData);
}
}
protected override void OnKeyDown(KeyEventArgs e)
{
if (e.KeyData == Keys.Tab)
{
this.SelectedText = " ";
}
else
{
base.OnKeyDown(e);
}
}
}
Imports System.Windows.Forms
Public Class Form1
Inherits Form
Public Sub New()
Dim panel As New FlowLayoutPanel()
Dim tabTextBox1 As New TabTextBox()
tabTextBox1.Text = "TabTextBox"
panel.Controls.Add(tabTextBox1)
Dim textBox1 As New TextBox()
textBox1.Text = "Normal TextBox"
panel.Controls.Add(textBox1)
Me.Controls.Add(panel)
End Sub
End Class
Class TabTextBox
Inherits TextBox
Protected Overrides Function IsInputKey( _
ByVal keyData As System.Windows.Forms.Keys) As Boolean
If keyData = Keys.Tab Then
Return True
Else
Return MyBase.IsInputKey(keyData)
End If
End Function
Protected Overrides Sub OnKeyDown( _
ByVal e As System.Windows.Forms.KeyEventArgs)
If e.KeyData = Keys.Tab Then
Me.SelectedText = " "
Else
MyBase.OnKeyDown(e)
End If
End Sub
End Class
備註
IsInputKey呼叫 方法,以判斷 參數所 keyData
指定的索引鍵是否為控制項想要的輸入索引鍵。 這個方法會在視窗訊息前置處理期間呼叫,以判斷指定的輸入索引鍵是否應該預先處理或直接傳送至控制項。 如果 IsInputKey 傳 true
回 ,則會將指定的索引鍵直接傳送至 控制項。 如果 IsInputKey 傳 false
回 ,則會預處理指定的索引鍵,而且只有在前置處理階段未取用時才會傳送給控制項。 前置處理的索引鍵包括 TAB、RETURN、ESC 和向上鍵、向下鍵、向左鍵和向右鍵。