Silverlight Virtual Keyboard in VB.NET
In this article you will see how to create an Virtual Keyboard in Silverlight.
Virtual Keyboard: Virtual Keyboard is an On-Screen Keyboard in Silverlight with support for Copying the input to the Clipboard which can then be Pasted into another application. My implementation is easily customizable, and you can add as many keyboard layouts as you require, or even customize your own. There are numerous limitations as this is my first attempt to implement such a control.
Example of Virtual Keyboard
<UserControl x:Class="SilverlightApplication1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="648">
<Grid x:Name="LayoutRoot" Background="AliceBlue" Height="329" Width="648">
<Canvas Height="35" Width="643" VerticalAlignment="Top" HorizontalAlignment="Left"Name="box">
<TextBox Canvas.Left="6" Canvas.Top="6" Height="23" Width="631" Name="store"/>
</Canvas>
<Canvas Height="292" Width="648" Margin="0,35,0,0" VerticalAlignment="Top"HorizontalAlignment="Left" Name="Content">
<StackPanel Height="265" Width="643" Name="Keyboard"/>
</Canvas>
</Grid>
</UserControl>
//MainPage.xaml.vb code
Private Sub Button_KeyPressed(ByVal Value As Object) _
Handles Me.KeyPressed
store.Focus()
store.SelectedText = Value
End Sub
Private Sub UpdateRow(ByRef Row As StackPanel, ByRef Source As String(,), _
ByRef Shift As Boolean, ByRef Count As Integer)
For Each Item As Button In Row.Children
For Index As Integer = 0 To Count
If Shift Then
If CStr(Item.Content) = CStr(Source(0, Index)) Then
Item.Content = Source(1, Index)
End If
Else
If CStr(Item.Content) = CStr(Source(1, Index)) Then
Item.Content = Source(0, Index)
End If
End If
Next
Next
End Sub
Private Sub Button_Click(ByVal sender As System.Object, _
ByVal e As System.Windows.RoutedEventArgs)
Dim _value As New Object
Dim _command As New Object
_value = CType(sender, Button).Content
_command = CType(sender, Button).Tag
If Not _command Is Nothing Then
_value = Nothing
Select Case _command
Case Sp.BackSpace, Sp.Copy, Sp.Paste, _
Sp.Home, Sp.End, Sp.Insert, Sp.Delete
RaiseEvent SpPressed(_command)
Case Sp.Shift
_isSft = Not _isSft
UpdateRow(_panel1, _row1, _isSft, 12)
UpdateRow(_panel2, _row2, _isSft, 11)
UpdateRow(_panel3, _row3, _isSft, 11)
UpdateRow(_panel4, _row4, _isSft, 10)
Case Sp.CapsLock
_isCps = Not _isCps
Case Sp.Tab
_value = vbTab
Case Sp.Enter
_value = vbCrLf
Case Sp.Space
_value = " "
End Select
End If
If Not _value Is Nothing Then
If _isCps Xor _isSft Then
_value = CStr(_value).ToUpper
Else
_value = CStr(_value).ToLower
End If
RaiseEvent KeyPressed(_value)
End If
End Sub
Hear I will explain some events to read and learn the hole program please download the source code given at the top of article.
Output Window
Conclusion
Hope this article would help you to understand how to create an Virtual Keyboard in Silverlight.