首页 > 解决方案 > 以编程方式单击 ContentDialog 的 PrimaryButton

问题描述

在 UWP 中,当文本框的 KeyDown 事件检测到已按下 Enter 时,如何以编程方式单击 ContentDialog 的 PrimaryButton?只是尝试添加键盘快捷方式以在文本框中接受答案并从键盘全部关闭对话框,而无需移动鼠标并单击确定。

private void A1TextBox_KeyDown(object sender, KeyRoutedEventArgs e)
{
    if (e.Key == Windows.System.VirtualKey.Enter)
    {
        // Programmatically Click PrimaryButton Here        
    }
}

<ContentDialog
    x:Class="App1.ContentDialog1"
    Title="DialogBox"
    Loaded="ContentDialog_Loaded"
    PrimaryButtonText="Ok"
    SecondaryButtonText="Cancel"
    PrimaryButtonClick="ContentDialog_PrimaryButtonClick"
    SecondaryButtonClick="ContentDialog_SecondaryButtonClick">

<Grid Name="A1Grid">
    <Grid.RowDefinitions>
        <RowDefinition Height="auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <TextBox Name="A1TextBox" Grid.Row="0" 
        PlaceholderText="Search String" 
        TextChanged="A1TextBox_TextChanged" 
        KeyDown="A1TextBox_KeyDown"/>
    <ScrollViewer Grid.Row="1" 
         ScrollViewer.VerticalScrollBarVisibility="Auto"
         VerticalAlignment="Stretch">
        <ListBox Name="A1ListBox" MinHeight="200"/>
    </ScrollViewer>
</Grid>
</ContentDialog>

标签: c#uwp

解决方案


您是否尝试过制作要单击“AcceptButton”的按钮?

//This goes in the form loading method
this.AcceptButton = PrimaryButton;

这应该将按钮变为蓝色,并且当在表单上按 enter 时将导致调用 click 函数。project

编辑:刚刚注意到这不适用于winforms。

this.DefaultButton = PrimaryButton;

谢谢比尔!


推荐阅读