2010-04-11 32 views
0

在Silverlight項目中,如何使左箭頭像一樣行事。(點),當用戶按下文本框中的左箭頭時,它將鍵入。並以同樣的方式如何使右箭頭如-(破折號)如何使箭頭鍵充當另一個鍵?

而我想用CTRL鍵在兩種模式之間切換:。和短劃線,常規的箭頭行爲,意思是當用戶按下Control時,拖曳箭頭將作爲。和破折號。當用戶按下控制鍵時,2個箭頭將按照常規箭頭操作。

+2

這是在Windows窗體或ASP.NET?什麼樣的控制? (或別的?) – 2010-04-11 09:01:52

+0

我相信@ le.shep20引用了'Ctrl'鍵。在不知道使用哪個框架/庫的情況下回答這個問題確實是不可能的。我只是想將WPF添加到可能性列表中。 – stakx 2010-04-11 09:05:27

+0

也許這不是關於應用程序內部,而是系統範圍內,使用C#執行實現。 @ le.shep20,你能否更新你的問題來澄清你的想法? – Abel 2010-04-11 09:30:42

回答

0
private void textBox1_KeyUp(object sender, KeyEventArgs e) 
     { 
      if (sender is TextBox) 
      { 
       TextBox textBox = (TextBox)sender; 
       if (e.Key == Key.Left || e.Key == Key.Right) 
       { 
        e.Handled = true; 
        char insert; 
        if (e.Key == Key.Left) 
        { 
         textBox1.SelectionStart = textBox1.Text.Length + 1; 
         insert = '.'; 
        } 
        else 
        { 
         insert = '-'; 
        } 
        int i = textBox.SelectionStart; 
        textBox1.Text = textBox1.Text.Insert(i, insert.ToString()); 
        textBox1.Select(i + 1, 0); 
       } 
      } 
     } 
2

如果是贏的形式或WPF,你只需要捕捉keypressed的事件並改變它的行爲,並將其設置爲「Handled」(在PreviewKeyDown之前和之後有一堆事件可用於完全控制每個按鍵會發生什麼

如果按下CTRL鍵,以及使用API​​可以檢查 在WPF使用KeyboardDevice物業,檢查:

if ((e.KeyboardDevice.Modifiers & ModifierKeys.Control) == ModifierKeys.Control) 

增加:。 同時 - 檢查了這一點SO question

而這一次,以及:SO Question2

+0

謝謝Dani,但我忘了提及我正在開發Silverlight應用程序!我如何用Silverlight做到這一點 - 我是新手! – Sara 2010-04-11 10:53:55

+0

我不知道silverligt,但我知道它與wpf非常相似。 我會檢查並嘗試更新答案。 – Dani 2010-04-11 11:24:05