Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF助记符选择不';t的行为类似于WinForms记忆选择_Wpf_Winforms - Fatal编程技术网

WPF助记符选择不';t的行为类似于WinForms记忆选择

WPF助记符选择不';t的行为类似于WinForms记忆选择,wpf,winforms,Wpf,Winforms,我正在维护一个混合应用程序,包含WinForms和WPF技术。理想情况下,WPF控件和WinForms控件之间的外观应该相同 区别在于:在WinForms中,如果选择带有助记键的文本框,则会自动选择该文本框的全部内容。这是一个很好的行为:如果要替换文本,只需按菜单键并开始键入即可 在WPF中,如果选择带有助记键的文本框,光标将显示在文本的开头。为什么有人希望光标在开头?人们多久要在文本前加一次词 有人知道是否有一种简单的方法可以改变WPF文本框的行为,从而用助记符激活文本框可以选择整个文本吗?但

我正在维护一个混合应用程序,包含WinForms和WPF技术。理想情况下,WPF控件和WinForms控件之间的外观应该相同

区别在于:在WinForms中,如果选择带有助记键的文本框,则会自动选择该文本框的全部内容。这是一个很好的行为:如果要替换文本,只需按菜单键并开始键入即可

在WPF中,如果选择带有助记键的文本框,光标将显示在文本的开头。为什么有人希望光标在开头?人们多久要在文本前加一次词

有人知道是否有一种简单的方法可以改变WPF文本框的行为,从而用助记符激活文本框可以选择整个文本吗?但是,用鼠标按钮激活文本框应该会将光标放在单击鼠标的任何位置。

我不知道这是否“容易”。。。创建一个事件处理程序,用于选择文本框中的所有文本:

public void OnGotKeyboardFocus( Object sender, EventArgs e)
{
    TextBox text = sender as TextBox;
    if( text == null)
        return;
    text.SelectAll();
}
然后创建一个全局应用于所有文本框的样式。我把它放在我的Windows.Resources中,但我想你可以把它放在App.Resources中

<Window x:Class="TextBoxSelectAll.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">

    <Window.Resources>
        <Style x:Key="{x:Type TextBox}" TargetType="{x:Type TextBox}">
            <EventSetter Event="GotKeyboardFocus" Handler="OnGotKeyboardFocus" />
        </Style>
    </Window.Resources>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition />
            <RowDefinition />
        </Grid.RowDefinitions>
        <TextBox Grid.Row="0"></TextBox>
        <TextBox Grid.Row="1"></TextBox>
    </Grid>
</Window>


比我希望的容易。但这能区分非菜单选择和鼠标选择吗?我已经测试过了,它按照我的要求工作。助记符选择会选择所有文本,而鼠标选择会使光标移动到单击鼠标的位置。我不明白为什么。通过助记符选择,我认为您只是指在GUI中使用tab键。文本框第一次获得焦点时,事件将被触发并导致调用事件处理程序。我实际上没有测试鼠标的部分。:)