将焦点设置为元素

时间:2019-07-02 13:41:24

标签: c# wpf focus ime

尝试使用IME(日语,平假名)向TextBox输入任何数据会导致应用程序崩溃,并出现MDA FatalExecutionEngineError错误。

我在窗口上有两个文本框。我开始使用字母数字模式向第一个字段输入数据,当文本的长度达到2时,将焦点设置到第二个字段。使用Shift + Tab键组合返回到第一个字段,切换到平假名模式并尝试输入任何数据。

我的窗口:

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition />
        </Grid.RowDefinitions>

        <TextBox Grid.Row="0" Margin="5" x:Name="field1" TextChanged="Field1_OnTextChanged" />
        <TextBox Grid.Row="1" Margin="5" x:Name="field2" />
    </Grid>
</Window>

后台:

namespace WpfApplication1
{
    using System.Windows.Controls;

    public partial class MainWindow
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Field1_OnTextChanged(object sender, TextChangedEventArgs e)
        {
            if (field1.Text.Length == 2)
            {
                field2.Focus();
            }
        }
    }
}

该错误消息包含以下详细信息: 托管调试助手“ FatalExecutionEngineError”已在“ [可执行文件的路径]”中检测到问题。

其他信息:运行时遇到致命错误。错误的地址在线程0x254c上的0x6cee610f处。错误代码为0x80131623。此错误可能是CLR或用户代码中不安全或不可验证部分的错误。该错误的常见来源包括COM-interop或PInvoke的用户封送处理错误,这些错误可能会破坏堆栈。

0 个答案:

没有答案