C# 将简单代码从Winform转换为silverlight应用程序时出现问题

C# 将简单代码从Winform转换为silverlight应用程序时出现问题,c#,winforms,silverlight,C#,Winforms,Silverlight,我有这个窗口窗体应用程序的代码,我一直试图将其转换为Silverlight应用程序,但它不起作用!。有一个文本框,我将KeyDown事件处理程序附加到它。当用户按下箭头键(左或右),而焦点在文本框上时,它将写入。或-。当它是窗口形式时,我使用了e.KeyCode和Key.Right,它工作得很好,但当它是silverlight时,我使用了e.Key和Key.Right,程序工作得不好,因为箭头执行两个函数的移动和写入。我如何在Silverlight中解决这个问题? (我的英语不好) 代码(窗口形

我有这个窗口窗体应用程序的代码,我一直试图将其转换为Silverlight应用程序,但它不起作用!。有一个文本框,我将KeyDown事件处理程序附加到它。当用户按下箭头键(左或右),而焦点在文本框上时,它将写入。或-。当它是窗口形式时,我使用了e.KeyCode和Key.Right,它工作得很好,但当它是silverlight时,我使用了e.Key和Key.Right,程序工作得不好,因为箭头执行两个函数的移动和写入。我如何在Silverlight中解决这个问题? (我的英语不好)

代码(窗口形式):

(和Silverlight):

我不明白,使用Keycode/Keys和Key/Key之间是否有巨大的不同效果?还是因为其他原因?

您必须设置

e.Handled = true;

因此,事件不会被进一步使用。

对于TextBox中的几个键,KeyDown事件将不成比例,因为TextBox在内部使用这些键,并在它们进入自定义用户代码之前将它们标记为e.已处理

以下是进一步解释问题的引文:

另一个例子是文本框。一些钥匙 例如,箭头键不可用 按文本框考虑文本,并且 而是认为特定于 控件UI行为和文本框 将这些事件案例标记为已处理

如果我是你,我只会使用KeyUp事件,因为你的自定义代码在该事件中工作正常

真诚地,

--贾斯汀·安吉尔

是的,谢谢你提供的信息。但使用keyUp也无法解决此问题,因为使用左/右箭头时光标仍会移动。我想知道有没有办法禁用箭头键的功能?
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);
                }
            }
        }
e.Handled = true;