2010-12-18 31 views
1

我有字符的列表:如何基於字符列表阻止用戶輸入?

var l = new List<char>(); 
l.AddRange(Path.GetInvalidFileNameChars()); 
l.AddRange(Path.GetInvalidPathChars()); 

我想,當用戶按下阻斷人物之一,以檢測和設置SupressKeyPresstrue

我有e.KeyCode,e.KeyDatae.KeyValue,但沒有一個對應於例如?

我該如何驗證它?

+1

你在處理'Control.KeyPress'事件嗎?不用說你正在處理什麼事件,或者'e'的數據類型是什麼,恐怕沒有人能夠幫助你。 – 2010-12-18 22:34:58

+0

'KeyDown'實際上。但我可以使用任何按鍵事件。 – BrunoLM 2010-12-18 22:37:06

+0

什麼是SupressKeyPress?它似乎不是任何.NET Framework類的屬性... – 2010-12-18 22:49:48

回答

3

您可以通過Handled值設置爲true,抑制KeyPress

var l = new List<char>(); 
l.AddRange(Path.GetInvalidFileNameChars()); 
l.AddRange(Path.GetInvalidPathChars()); 

this.KeyPress += (s, e) => 
{ 
    e.Handled = l.Any(x => x == e.KeyChar); 
}; 
+2

+1,但我傾向於使用.Contains而不是where子句... – 2010-12-18 22:49:21

+0

我明白了,我不能使用'KeyDown'。我沒有注意到事件發生如此不同。 – BrunoLM 2010-12-18 23:08:26

+0

另外,從技術上講,它可能應該是(sender,eventargs),因爲這是傳遞給委託的內容。 – 2010-12-19 01:24:10

0
e.Handled = true; 

似乎並沒有工作,至少不適合我。

是做了keydown事件工作與物業:

e.SupressKeyPress; 

由於之前按鍵或KEYUP活動,我「過濾」鍵,我想在一個額外的KeyDown事件處理的KeyDown發生。

SupressKeyPress Property MSDN

相關問題