Imports System.Windows.Interop Public Class Keyboard ' '' Codice che permette di mantenere le proporzioni(Aspect Ratio) della finestra dopo l'ingrondimento o rimpicciolimento della stessa ''Public Const ASPECTRATIO As Double = 12 / 5 ''Protected Overrides Sub OnSourceInitialized(e As EventArgs) '' MyBase.OnSourceInitialized(e) '' Dim source As HwndSource = TryCast(HwndSource.FromVisual(Me), HwndSource) '' If source IsNot Nothing Then '' source.AddHook(New HwndSourceHook(AddressOf WinProc)) '' End If ''End Sub ''Public Const WM_EXITSIZEMOVE As Integer = &H232 ''Private Function WinProc(hwnd As IntPtr, msg As Int32, wParam As IntPtr, lParam As IntPtr, ByRef handled As [Boolean]) As IntPtr '' Dim result As IntPtr = IntPtr.Zero '' Select Case msg '' Case WM_EXITSIZEMOVE '' If True Then '' Me.Width = Me.Height * ASPECTRATIO '' Exit Select '' End If '' End Select '' Return result ''End Function Private m_MainWindow As MainWindow = Application.Current.MainWindow Friend m_StringResult As String = String.Empty Friend m_CurrTxBx As TextBox Friend m_CurrentLbl As String = String.Empty ' Variabili che contengono lo stato dei tasti Shift, Alt, Caps Lock Private m_bShift As Boolean = False Private m_bAlt As Boolean = False Private m_CapsLock As Boolean = False Sub New() ' This call is required by the designer. InitializeComponent() ' Altre inizializzazioni Owner = m_MainWindow ' Imposto Dimensioni e posizione della tastiera Top = m_MainWindow.Top + (m_MainWindow.Height / 2 - Height / 2) Left = m_MainWindow.Left + (m_MainWindow.Width / 2 - Width / 2) End Sub Sub New(ByVal sTitle As String, ByVal sValue As String, Optional ByVal CurrentTxBx As TextBox = Nothing) ' This call is required by the designer. InitializeComponent() ' Altre inizializzazioni Owner = m_MainWindow CurrNameTxBl.Text = sTitle CurrTextTxBx.Text = sValue ' Text box per valore di ritorno m_CurrTxBx = CurrentTxBx ' Imposto Dimensioni e posizione della tastiera Top = m_MainWindow.Top + (m_MainWindow.Height / 2 - Height / 2) Left = m_MainWindow.Left + (m_MainWindow.Width / 2 - Width / 2) End Sub 'Evita che venga selezionato il testo all'interno della textbox Private Sub CurrTextTxBx_PreviewMouseDown(sender As Object, e As MouseButtonEventArgs) Handles CurrTextTxBx.PreviewMouseDown e.Handled = True CurrTextTxBx.SelectedText = String.Empty End Sub Private Sub OkBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click m_StringResult = CurrTextTxBx.Text If Not IsNothing(m_CurrTxBx) Then m_CurrTxBx.Text = CurrTextTxBx.Text End If Me.DialogResult = True Me.Close() End Sub Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs) Handles ExitBtn.Click m_StringResult = String.Empty Me.DialogResult = False Me.Close() End Sub Private Sub UpperLowerCase(Value As Boolean) If Value Then qBtn.Content = "Q" wBtn.Content = "W" eBtn.Content = "E" rBtn.Content = "R" tBtn.Content = "T" yBtn.Content = "Y" uBtn.Content = "U" iBtn.Content = "I" oBtn.Content = "O" pBtn.Content = "P" aBtn.Content = "A" sBtn.Content = "S" dBtn.Content = "D" fBtn.Content = "F" gBtn.Content = "G" hBtn.Content = "H" jBtn.Content = "J" kBtn.Content = "K" lBtn.Content = "L" zBtn.Content = "Z" xBtn.Content = "X" cBtn.Content = "C" vBtn.Content = "V" bBtn.Content = "B" nBtn.Content = "N" mBtn.Content = "M" Else qBtn.Content = "q" wBtn.Content = "w" eBtn.Content = "e" rBtn.Content = "r" tBtn.Content = "t" yBtn.Content = "y" uBtn.Content = "u" iBtn.Content = "i" oBtn.Content = "o" pBtn.Content = "p" aBtn.Content = "a" sBtn.Content = "s" dBtn.Content = "d" fBtn.Content = "f" gBtn.Content = "g" hBtn.Content = "h" jBtn.Content = "j" kBtn.Content = "k" lBtn.Content = "l" zBtn.Content = "z" xBtn.Content = "x" cBtn.Content = "c" vBtn.Content = "v" bBtn.Content = "b" nBtn.Content = "n" mBtn.Content = "m" End If End Sub ' Tasti azione Private Sub ShiftBtn_Click(sender As Object, e As RoutedEventArgs) Handles Shift1Btn.Click, Shift2Btn.Click If m_bShift Then m_bShift = False UpperLowerCase(False) Shift1Btn.IsChecked = False Shift2Btn.IsChecked = False Else m_bShift = True If m_CapsLock Then UpperLowerCase(False) Else UpperLowerCase(True) End If Shift1Btn.IsChecked = True Shift2Btn.IsChecked = True End If End Sub Private Sub CapsLockBtn_Click(sender As Object, e As RoutedEventArgs) Handles CapsLockBtn.Click If m_CapsLock Then If m_bShift Then UpperLowerCase(True) Else UpperLowerCase(False) End If m_CapsLock = False CapsLockBtn.IsChecked = False Else If m_bShift Then m_bShift = False Shift1Btn.IsChecked = False Shift2Btn.IsChecked = False End If m_CapsLock = True UpperLowerCase(True) CapsLockBtn.IsChecked = True End If End Sub Private Sub AltBtn_Click(sender As Object, e As RoutedEventArgs) Handles AltBtn.Click, AltGrBtn.Click 'Per il momento non fa' nulla End Sub ' Funzione che gestisce il click di una lettera Private Sub LetterClick(Uppercase As Char, Lowercase As Char) If m_CapsLock Then If m_bShift Then CurrTextTxBx.Text &= Lowercase m_bShift = False UpperLowerCase(True) Shift1Btn.IsChecked = False Shift2Btn.IsChecked = False Else CurrTextTxBx.Text &= Uppercase End If Else If m_bShift Then CurrTextTxBx.Text &= Uppercase m_bShift = False UpperLowerCase(False) Shift1Btn.IsChecked = False Shift2Btn.IsChecked = False Else CurrTextTxBx.Text &= Lowercase End If End If End Sub ' Funzione che gestisce il click di numeri e simboli Private Sub NumberClick(Uppercase As Char, Lowercase As Char) If m_bShift Then If m_CapsLock Then UpperLowerCase(True) Else UpperLowerCase(False) End If CurrTextTxBx.Text &= Uppercase m_bShift = False Shift1Btn.IsChecked = False Shift2Btn.IsChecked = False Else CurrTextTxBx.Text &= Lowercase End If End Sub Private Sub BackslashBtn_Click(sender As Object, e As RoutedEventArgs) Handles BackslashBtn.Click NumberClick("|", "\") End Sub Private Sub OneBtn_Click(sender As Object, e As RoutedEventArgs) Handles OneBtn.Click NumberClick("!", "1") End Sub Private Sub TwoBtn_Click(sender As Object, e As RoutedEventArgs) Handles TwoBtn.Click NumberClick("""", "2") End Sub Private Sub ThreeBtn_Click(sender As Object, e As RoutedEventArgs) Handles ThreeBtn.Click NumberClick("£", "3") End Sub Private Sub FourBtn_Click(sender As Object, e As RoutedEventArgs) Handles FourBtn.Click NumberClick("$", "4") End Sub Private Sub FiveBtn_Click(sender As Object, e As RoutedEventArgs) Handles FiveBtn.Click NumberClick("%", "5") End Sub Private Sub SixBtn_Click(sender As Object, e As RoutedEventArgs) Handles SixBtn.Click NumberClick("&", "6") End Sub Private Sub SevenBtn_Click(sender As Object, e As RoutedEventArgs) Handles SevenBtn.Click NumberClick("/", "7") End Sub Private Sub EightBtn_Click(sender As Object, e As RoutedEventArgs) Handles EightBtn.Click NumberClick("(", "8") End Sub Private Sub NineBtn_Click(sender As Object, e As RoutedEventArgs) Handles NineBtn.Click NumberClick(")", "9") End Sub Private Sub ZeroBtn_Click(sender As Object, e As RoutedEventArgs) Handles ZeroBtn.Click NumberClick("=", "0") End Sub Private Sub BackspaceBtn_Click(sender As Object, e As RoutedEventArgs) Handles BackspaceBtn.Click If CurrTextTxBx.Text = String.Empty Then Return Else CurrTextTxBx.Text = CurrTextTxBx.Text.Substring(0, CurrTextTxBx.Text.Length - 1) End If End Sub Private Sub TabBtn_Click(sender As Object, e As RoutedEventArgs) Handles TabBtn.Click End Sub Private Sub qBtn_Click(sender As Object, e As RoutedEventArgs) Handles qBtn.Click LetterClick("Q", "q") End Sub Private Sub wBtn_Click(sender As Object, e As RoutedEventArgs) Handles wBtn.Click LetterClick("W", "w") End Sub Private Sub eBtn_Click(sender As Object, e As RoutedEventArgs) Handles eBtn.Click LetterClick("E", "e") End Sub Private Sub rBtn_Click(sender As Object, e As RoutedEventArgs) Handles rBtn.Click LetterClick("R", "r") End Sub Private Sub tBtn_Click(sender As Object, e As RoutedEventArgs) Handles tBtn.Click LetterClick("T", "t") End Sub Private Sub yBtn_Click(sender As Object, e As RoutedEventArgs) Handles yBtn.Click LetterClick("Y", "y") End Sub Private Sub uBtn_Click(sender As Object, e As RoutedEventArgs) Handles uBtn.Click LetterClick("U", "u") End Sub Private Sub iBtn_Click(sender As Object, e As RoutedEventArgs) Handles iBtn.Click LetterClick("I", "i") End Sub Private Sub oBtn_Click(sender As Object, e As RoutedEventArgs) Handles oBtn.Click LetterClick("O", "o") End Sub Private Sub pBtn_Click(sender As Object, e As RoutedEventArgs) Handles pBtn.Click LetterClick("P", "p") End Sub Private Sub Enter1Btn_Click(sender As Object, e As RoutedEventArgs) Handles Enter1Btn.Click End Sub Private Sub aBtn_Click(sender As Object, e As RoutedEventArgs) LetterClick("A", "a") End Sub Private Sub sBtn_Click(sender As Object, e As RoutedEventArgs) Handles sBtn.Click LetterClick("S", "s") End Sub Private Sub dBtn_Click(sender As Object, e As RoutedEventArgs) Handles dBtn.Click LetterClick("D", "d") End Sub Private Sub fBtn_Click(sender As Object, e As RoutedEventArgs) Handles fBtn.Click LetterClick("F", "f") End Sub Private Sub gBtn_Click(sender As Object, e As RoutedEventArgs) Handles gBtn.Click LetterClick("G", "g") End Sub Private Sub hBtn_Click(sender As Object, e As RoutedEventArgs) Handles hBtn.Click LetterClick("H", "h") End Sub Private Sub jBtn_Click(sender As Object, e As RoutedEventArgs) Handles jBtn.Click LetterClick("J", "j") End Sub Private Sub kBtn_Click(sender As Object, e As RoutedEventArgs) Handles kBtn.Click LetterClick("K", "k") End Sub Private Sub lBtn_Click(sender As Object, e As RoutedEventArgs) Handles lBtn.Click LetterClick("L", "l") End Sub Private Sub PlusBtn_Click(sender As Object, e As RoutedEventArgs) Handles PlusBtn.Click NumberClick("*", "+") End Sub Private Sub Enter2Btn_Click(sender As Object, e As RoutedEventArgs) Handles Enter2Btn.Click End Sub Private Sub MinorBtn_Click(sender As Object, e As RoutedEventArgs) Handles MinorBtn.Click NumberClick(">", "<") End Sub Private Sub zBtn_Click(sender As Object, e As RoutedEventArgs) Handles zBtn.Click LetterClick("Z", "z") End Sub Private Sub xBtn_Click(sender As Object, e As RoutedEventArgs) Handles xBtn.Click LetterClick("X", "x") End Sub Private Sub cBtn_Click(sender As Object, e As RoutedEventArgs) Handles cBtn.Click LetterClick("C", "c") End Sub Private Sub vBtn_Click(sender As Object, e As RoutedEventArgs) Handles vBtn.Click LetterClick("V", "v") End Sub Private Sub bBtn_Click(sender As Object, e As RoutedEventArgs) Handles bBtn.Click LetterClick("B", "b") End Sub Private Sub nBtn_Click(sender As Object, e As RoutedEventArgs) Handles nBtn.Click LetterClick("N", "n") End Sub Private Sub mBtn_Click(sender As Object, e As RoutedEventArgs) Handles mBtn.Click LetterClick("M", "m") End Sub Private Sub MinusBtn_Click(sender As Object, e As RoutedEventArgs) Handles MinusBtn.Click NumberClick("_", "-") End Sub Private Sub DotBtn_Click(sender As Object, e As RoutedEventArgs) Handles DotBtn.Click NumberClick(":", ".") End Sub Private Sub CommaBtn_Click(sender As Object, e As RoutedEventArgs) Handles CommaBtn.Click NumberClick(";", ",") End Sub Private Sub SpaceBtn_Click(sender As Object, e As RoutedEventArgs) Handles SpaceBtn.Click CurrTextTxBx.Text &= " " End Sub Private Sub ClearBtn_Click(sender As Object, e As RoutedEventArgs) Handles ClearBtn.Click CurrTextTxBx.Text = String.Empty End Sub End Class