Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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
使用C#单击WPF窗口上的按钮时,如何向活动窗口发送文本?_C#_Wpf - Fatal编程技术网

使用C#单击WPF窗口上的按钮时,如何向活动窗口发送文本?

使用C#单击WPF窗口上的按钮时,如何向活动窗口发送文本?,c#,wpf,C#,Wpf,我正在使用WPF和C构建一个屏幕键盘,我想知道当我点击一个按钮时,如何告诉我的程序在活动窗口中输入文本。我希望它能像其他屏幕键盘一样工作 您的按钮是否订阅了某种类型的点击事件?如果是,您可以通过将按钮字符串值连接到活动窗口中的当前值,将按钮的值添加到您正在谈论的活动窗口中。如果没有单击事件,您可以添加一个,然后按照上面提到的操作 如何订阅按钮单击事件: btn.Click += btn1_Click; private void btn1_Click(object sender, RoutedE

我正在使用WPF和C构建一个屏幕键盘,我想知道当我点击一个按钮时,如何告诉我的程序在活动窗口中输入文本。我希望它能像其他屏幕键盘一样工作


您的按钮是否订阅了某种类型的点击事件?如果是,您可以通过将按钮字符串值连接到活动窗口中的当前值,将按钮的值添加到您正在谈论的活动窗口中。如果没有单击事件,您可以添加一个,然后按照上面提到的操作

如何订阅按钮单击事件:

btn.Click += btn1_Click;

private void btn1_Click(object sender, RoutedEventArgs e)
{
    // concatenate to the active window result view the button value here
}

一种方法是使用Messenger,就像它在MVVM模式中的常见用法一样

您可以向messenger注册一个方法:

messengerInstance.Register<objecttype>(object recipient, string identCode, Action<objecttype> method);
现在,您可以在另一个类中发送消息:

messengerInstance.Send<string>("A", "MyCode");

这是我在工作中使用的Messenger类:

这是否回答了您的问题-1:按照我的理解,OP想在你点击一个按钮后写入另一个进程的输入,就像普通的屏幕键盘一样。他想要的不是很清楚,我认为他有多个代表键盘的按钮,当按下一个按钮时,他希望将值发送到活动窗口中的某种文本框中“我想知道当我单击按钮时,如何告诉我的程序在活动窗口中输入文本。“,是的,这个问题确实没有解释他在追求什么,他尝试了什么,但这肯定是他问的。但他说他正在构建一个屏幕键盘,所以他可能必须在某个地方经历一个按钮点击事件,该事件应该会更新他活动窗口中的文本,按钮是他键盘上一把钥匙的代表你说得对,乔纳森。我想选择一个活动窗口,然后单击一个按钮在该活动窗口中输入文本。我说的是另一个程序哦,那么我不知道答案。我甚至不认为会有那么多,因为windows已经有了屏幕键盘,所以没有必要再创建一个。我上传了我程序的图片。
messengerInstance.Register<string>(this /*you are referring to this instance*/, "MyCode", MyMethod);
messengerInstance.Send<string>("A", "MyCode");
public class A
{
    private Messenger messenger = Messenger.Instance; //Messenger is singleton, means it is build to only have one instance

    public A()
    {
        messenger.Register<string>(this, "MyCode", MyMethod);
    }

    private void MyMethod(string str)
    {
        Console.WriteLine(str);
    }
}

public class B
{
    private Messenger messenger = Messenger.Instance;

    public B()
    {
        messenger.Send<string>("Hello, World!", "MyCode");
    }
}
//an integer
messenger.Send<int>(10, "MyCode");

//a boolean
messenger.Send<bool>(true, "MyCode");

//or even other classes
messenger.Send<MyClass>(new MyClass(), "MyCode");