长沙UI培训
达内长沙松桂园中心

18487146383

热门课程

如何WPF模拟UI键盘录入?

  • 时间:2017-03-07
  • 发布:长沙UI培训
  • 来源:博客园

今天UI机构老师给大家讲讲WPF模拟UI键盘录入,这些知识对今后大家的学习会有很大的帮助哦!开发WinForm应用程序时可以利用SendKeys类方便的模拟键盘录入操作。那么在WPF中如何为控件实现键盘模拟呢?本篇将使用WPF SendKeys实现和WinForm中相同的效果。

首先将WpfSendKeys.dll加入到项目References中,在XAML中加入两个Textbox和一个Button如下代码。

<Window x:Class="WpKeyboard.MainWindow"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="MainWindow" Loaded="Window_Loaded" KeyDown="Window_KeyDown" 

x:Name="mainWin" Height="350" Width="525">

<Grid>

<TextBox x:Name="tb1" FontSize="50" Margin="73,12,84,218" />

<TextBox x:Name="tb2" FontSize="50" Margin="73,119,84,117" />

<Button x:Name="btn" Content="Auto Click and Change Font Color"

Click="btn_Click" Margin="73,229,84,36" />

</Grid>

</Window>

打开C#程序,添加System.Windows.Input.Test命名空间。定义SendToUIThread方法用于将键盘指令发送到WPF控件上。在Window_Loaded中通过调用SendToUIThread方法向Textbox中逐一写入"Hello World!"字符,并对字符进行拷贝,最后实现自动点击Button完成更换字体颜色的操作。其中字符串拷贝工作是通过判断模拟键盘输入的内容为"Control+C",即将字符串拷贝到第二个Textbox中。

using System;

using System.Threading;

using System.Windows;

using System.Windows.Input;

using System.Windows.Input.Test;

using System.Windows.Media;

using System.Windows.Threading;

namespace WpKeyboard

{

/// <summary>

/// Interaction logic for MainWindow.xaml

/// </summary>

public partial class MainWindow : Window

{

public MainWindow()

{

InitializeComponent();

}

private void SendToUIThread(UIElement element, string text)

{

element.Dispatcher.BeginInvoke(

new Action(() => { SendKeys.Send(element, text); }),

DispatcherPriority.Input

);

}

private void btn_Click(object sender, RoutedEventArgs e)

{

tb1.Foreground = new SolidColorBrush(Colors.Red);

tb2.Foreground = new SolidColorBrush(Colors.Blue);

}

private void Window_Loaded(object sender, RoutedEventArgs e)

{

ThreadPool.QueueUserWorkItem(_ =>

{

Thread.Sleep(3000);

SendToUIThread(tb1, "Hello");

Thread.Sleep(1000);

SendToUIThread(tb1, " W");

Thread.Sleep(1000);

SendToUIThread(tb1, "o");

Thread.Sleep(1000);

SendToUIThread(tb1, "r");

Thread.Sleep(1000);

SendToUIThread(tb1, "ld!");

Thread.Sleep(1000);

SendToUIThread(mainWin, "^c");

Thread.Sleep(1000);

SendToUIThread(btn, "{ENTER}");

});

}

private void Window_KeyDown(object sender, KeyEventArgs e)

{

if (e.KeyboardDevice.Modifiers.HasFlag(ModifierKeys.Control) && e.Key == Key.C)

{

tb2.Text = tb1.Text;

}

}

}

}

动态演示

程序运行后无需点击任何按键,程序自动完成图中操作。

长沙IT培训机构

关于WPF模拟UI键盘录入的知识,UI培训机构老师今天要给给大家分享到这里就告一个段落了,期还会有更多内容分享给大家,不要错过噢!

上一篇:什么是jQuery UI?
下一篇:网页设计的五个Metro UI风格

自学UI设计到底难不难?

如何是让导航栏眼前一亮?

想提升B端客服体验?看下面!

为色盲设计的色彩

选择城市和中心
贵州省

广西省

海南省

扫一扫

了解更多干货