一千萬個為什麽

搜索

將簡單代碼從Winform轉換為silverlight應用程序的問題

我有窗口表單應用程序的代碼,我一直在嘗試將其轉換為Silverlight應用程序,但它不起作用!有一個Textbox,我將KeyDown事件處理程序附加到它。當用戶按下箭頭鍵(左或右)而焦點在文本框上時,它會寫入。要麽 -。當它是窗口形式我使用e.KeyCode和Keys.Right和它的工作很好但是當它是silverlight我使用e.Key和key.Right和程序不能很好,因為箭頭做2個功能移動和寫./-。我如何在Silverlight中解決這個問題? (我的英語不好)

代碼(窗口形式):

private void textBox1_KeyDown(object sender, KeyEventArgs e)
        {
            if (sender is TextBox)
            {
                TextBox textBox = (TextBox)sender; 
                if (e.KeyCode == Keys.Left || e.KeyCode == Keys.Right)
                {
                    e.Handled = true; 
                    char insert; 
                    if (e.KeyCode == Keys.Left) 
                    { insert = '.'; }

                    else
                    { insert = '-'; } 
                    int i = textBox.SelectionStart; 
                    textBox.Text = textBox.Text.Insert(i, insert.ToString()); 
                    textBox.Select(i + 1, 0);
                }
            }
        }

(和Silverlight):

private void textBox1_KeyDown(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) 
                    { insert = '.'; }

                    else
                    { insert = '-'; } 
                    int i = textBox.SelectionStart; 
                    textBox.Text = textBox.Text.Insert(i, insert.ToString()); 
                    textBox.Select(i + 1, 0);
                }
            }
        }

我不明白,使用Keycode/Keys和Key/Key之間有什麽不同的影響,還是因為別的什麽?

最佳答案

KeyDown事件與TextBox中的幾個鍵不成比例,因為TextBox在內部使用這些鍵並在它們到達自定義用戶代碼之前將它們標記為e.Handled。

這是解釋問題的 MSDN 引用進一步:

另一個例子是TextBox。一些鑰匙   比如ARROW鍵不是   通過TextBox考慮文本並且是   而是被認為特定的   控制UI行為和TextBox   將這些事件案例標記為已處理。

如果我是你,我只是使用KeyUp事件,因為你的自定義代碼似乎在該事件中正常工作。

真誠,結果 - 賈斯汀天使

轉載註明原文: 將簡單代碼從Winform轉換為silverlight應用程序的問題