如何通过char进入TextBox?

时间:2010-12-14 13:36:31

标签: wpf textbox

我在焦点上有一些TextBox(光标在他身上闪烁)。 现在,从其他usercontrol(包含按钮)我想发送一个事件,当按下用户控件上的任何按钮时,会将char插入TextBox。

这需要不失去TextBox的焦点......(在TextBox上闪烁光标)

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

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您是否希望将此虚拟键盘与其他应用程序一起使用,还是仅在您的应用程序中使用?除此之外,如果它只是您的应用程序,您是否只想将字符插入一个特定的TextBox或可能的任何TextBox

如果它是一个用于任何应用程序的虚拟键盘,那么您将需要使用像SendKeys这样的Win32 API方法。 WinFormsusing SendKeys提供了一个非常简单的界面。

如果它只需要为TextBox添加字符,那么修改TextBox的{​​{1}}属性就更容易了,而不是尝试将其上的事件提升到得到理想的行为。有Text属性可以告诉您插入角色的位置。除此之外,它是简单的字符串连接。

答案 2 :(得分:1)

        <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>

代码:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        MainTextBox.Text += (sender as Button).Content.ToString();
    }

答案 3 :(得分:1)

var text = button.Content as string;
textbox.SelectedText = text;
textbox.SelectionLength = 0;    // removing selection from inserted text
textbox.SelectionStart += text.Length;

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

找到
var textbox = FocusManager.GetFocusedElement(FocusManager.GetFocusScope(this)) as TextBox;

而不是FocusManager.GetFocusScope(this),您可以放置​​window

如果您不仅需要文本框 - WinAPI函数应该有帮助。见http://www.pinvoke.net/default.aspx/user32.sendinput