Wpf 如何通过字符进入文本框?

Wpf 如何通过字符进入文本框?,wpf,textbox,Wpf,Textbox,我在焦点上有一些文本框(光标在他身上闪烁)。 现在,我想从其他usercontrol(包含按钮)发送一个事件,当按下usercontrol上的任何按钮时,该事件将在文本框中插入字符 这需要在不丢失文本框焦点的情况下。。。(文本框上的光标闪烁) 我怎么做? (我尝试提高按键向下事件-但它不起作用)使您的按钮不可聚焦(focusable=false)。使您的按钮不可聚焦(focusable=false)。您想在其他应用程序中使用此虚拟键盘,还是仅在应用程序中使用?除此之外,如果只是您的应用程序,您是

我在焦点上有一些文本框(光标在他身上闪烁)。 现在,我想从其他usercontrol(包含按钮)发送一个事件,当按下usercontrol上的任何按钮时,该事件将在文本框中插入字符

这需要在不丢失文本框焦点的情况下。。。(文本框上的光标闪烁)

我怎么做?
(我尝试提高按键向下事件-但它不起作用)

使您的按钮不可聚焦(focusable=false)。

使您的按钮不可聚焦(focusable=false)。

您想在其他应用程序中使用此虚拟键盘,还是仅在应用程序中使用?除此之外,如果只是您的应用程序,您是否只想将字符插入一个特定的
文本框
,或者任何
文本框

如果它是一个用于任何应用程序的虚拟键盘,那么您将需要使用类似的Win32 API方法
WinForms
有一个非常简单的用户界面


如果它只需要向一个
TextBox
添加字符,那么修改
TextBox
Text
属性要容易得多,而不是试图在其上引发事件以获得所需的行为。有一个
CaretIndex
属性将告诉您在何处插入字符。除此之外,它是简单的字符串连接。

您想在其他应用程序中使用此虚拟键盘,还是只在您的应用程序中使用?除此之外,如果只是您的应用程序,您是否只想将字符插入一个特定的
文本框
,或者任何
文本框

        <StackPanel>
            <TextBox Name="MainTextBox" />
            <Button Content="A"
                    Focusable="False"
                    Click="Button_Click" />
            <Button Content="B"
                    Focusable="False"
                    Click="Button_Click" />
            <Button Content="C"
                    Focusable="False"
                    Click="Button_Click" />
            <Button Content="D"
                    Focusable="False"
                    Click="Button_Click" />
            <Button Content="E"
                    Focusable="False"
                    Click="Button_Click" />
        </StackPanel>
如果它是一个用于任何应用程序的虚拟键盘,那么您将需要使用类似的Win32 API方法
WinForms
有一个非常简单的用户界面

如果它只需要向一个
TextBox
添加字符,那么修改
TextBox
Text
属性要容易得多,而不是试图在其上引发事件以获得所需的行为。有一个
CaretIndex
属性将告诉您在何处插入字符。除此之外,它是简单的字符串连接

        <StackPanel>
            <TextBox Name="MainTextBox" />
            <Button Content="A"
                    Focusable="False"
                    Click="Button_Click" />
            <Button Content="B"
                    Focusable="False"
                    Click="Button_Click" />
            <Button Content="C"
                    Focusable="False"
                    Click="Button_Click" />
            <Button Content="D"
                    Focusable="False"
                    Click="Button_Click" />
            <Button Content="E"
                    Focusable="False"
                    Click="Button_Click" />
        </StackPanel>
这将在光标位置插入按钮内容(并替换所选文本)-与用户从键盘输入的内容相同。 注:如果
textbox
未知,则可使用

var textbox = FocusManager.GetFocusedElement(FocusManager.GetFocusScope(this)) as TextBox;
代替
FocusManager.GetFocusScope(此)
您可以将
窗口设置为

如果不仅仅是文本框需要它,WinAPI函数应该会有所帮助。看

这将在光标位置插入按钮内容(并替换所选文本)-与用户从键盘输入的内容相同。 注:如果
textbox
未知,则可使用

var textbox = FocusManager.GetFocusedElement(FocusManager.GetFocusScope(this)) as TextBox;
代替
FocusManager.GetFocusScope(此)
您可以将
窗口设置为


如果不仅仅是文本框需要它,WinAPI函数应该会有所帮助。请参见

如果不从文本框中丢失焦点,则无法单击其他按钮。你为什么要这样做?好的,重点不是主要问题:)-我想使用类似按钮的虚拟键盘这是一种虚拟键盘,包含5个按钮(1、2、3、4、5),每个按钮都需要作为字符添加到文本框中。“虚拟键盘”是与2个文本框存在于同一窗口中的用户控件。我知道这两个文本框中的女巫正在关注中,所以我知道我需要将事件发送给谁。但我仍然不知道如何发送事件…您不能单击另一个按钮而不失去文本框的焦点。你为什么要这样做?好的,重点不是主要问题:)-我想使用类似按钮的虚拟键盘这是一种虚拟键盘,包含5个按钮(1、2、3、4、5),每个按钮都需要作为字符添加到文本框中。“虚拟键盘”是与2个文本框存在于同一窗口中的用户控件。我知道这两个文本框中的女巫正在关注中,所以我知道我需要将事件发送给谁。但我仍然不知道如何发送事件…但问题是我需要前后移动光标,如果我只是更改文本框的文本,那么这不是实际情况。但问题是我需要前后移动光标,如果我只是更改文本框的文本,那么这就不是实际情况。