فرهاد خانلری
کارشناس ارشد شبکه مایکروسافت

آموزش تغییر خودکار زبان کیبورد Textbox در ویژوال بیسیک

چگونه بصورت خودکار زبان کیبورد را در ویژوال بیسیک تغییر دهیم ؟ اگر طراحی برنامه ای را در دست دارید و تمایل دارید مقادیری که کاربران در برنامه وارد میکنند به دلخواه شما یا به عبارتی دیگر راحتی کار را برای کاربران بخواهید یکی از این راه ها استفاده از تغییرات اتوماتیک مقادیر در Text Box ها هست یعنی اگر میخواهید کاربر نام فارسی را در Text Box تایپ کند باید اتوماتیک زبان کیبورد تغییر کند برای این منظور شما از ابزار های واژوال استادیو نمیتوانید استفاده کنید و فقط باید از کد نویسی بهره ببرید در ادامه بنده دو Text Box روی فرم قرار میدهم که با کد های زیر میتوانم بگویم text Box اول فارسی تایپ شود و Text Box دوم زبان دیگری مثل انگلیسی. ضمناً شما میتوانید با تکنیک های RequiredFieldValidator ورود داده های کاربران رو کنترل کنید.در قدم اول قطعه کد زیر را در بالای کلاس اصلی یعنی General قرار دهید:

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
Imports System.Globalization

سپس نوع زبان های مورد نظر را در پایین نام کلاس بنویسید در این مثال ما دو زبان انتخاب کرده ایم

Public Class Form1
    Private PersianInput As InputLanguage
    Private EnglishInput As InputLanguage
End Class

در Form Load برنامه تکه کد زیر را قرار میدهیم به این صورت که در ابتدا یک مقدار اولیه به PersianInput و EnglishInput میدهیم.

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        PersianInput = InputLanguage.CurrentInputLanguage
        EnglishInput = InputLanguage.CurrentInputLanguage

        Dim count As Integer
        count = InputLanguage.InstalledInputLanguages.Count
        For i As Integer = 1 To (count - 1)
            If InputLanguage.InstalledInputLanguages(i).LayoutName.Contains("Persian") = True Then
                PersianInput = InputLanguage.InstalledInputLanguages(i)
            Else
                If InputLanguage.InstalledInputLanguages(i).LayoutName.Contains("English") = True Then
                    EnglishInput = InputLanguage.InstalledInputLanguages(i)
                End If
            End If
        Next i
    End Sub

قدم بعدی کمی سلیقه ای هست و شما میتوانید نسبت به سلیقه تون بگید که پس از کدام رویداد این اتفاق بیوفتد در این مثال بنده پس از رویداد Mouse Enter این اقدام رو انجام دادم شما میتوانید هر رویدادی رو برای برنامه تون انتخاب کنید یا تمام رویداد ها مثل mouse Down ,Text change و ... که در این صورت کاربر به هر روشی به Text Box بعدی رفت اتوماتیک این اتفاق برای کیبوردش بیوفتد و نخواهد هر بار زبان کیبورد را تغییر دهد

تغییر اتوماتیک زبان TEXT Box ویژوال بیسیک

کد های زیر به ترتیب برای Text Box های فارسی و انگلیسی هستند که در ادامه خواهید دید

    Private Sub FaTextBox_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FaTextBox.MouseEnter
        InputLanguage.CurrentInputLanguage = PersianInput
    End Sub


    Private Sub EnTextBox_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EnTextBox.MouseEnter

        InputLanguage.CurrentInputLanguage = EnglishInput

    End Sub

تصویر زیر نمونه ای کامل از این کد هست :

وب سایت توسینسو
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        PersianInput = InputLanguage.CurrentInputLanguage
        EnglishInput = InputLanguage.CurrentInputLanguage

        Dim count As Integer
        count = InputLanguage.InstalledInputLanguages.Count
        For i As Integer = 1 To (count - 1)
            If InputLanguage.InstalledInputLanguages(i).LayoutName.Contains("Persian") = True Then
                PersianInput = InputLanguage.InstalledInputLanguages(i)
            Else
                If InputLanguage.InstalledInputLanguages(i).LayoutName.Contains("English") = True Then
                    EnglishInput = InputLanguage.InstalledInputLanguages(i)
                End If
            End If
        Next i
    End Sub

    Private Sub FaTextBox_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FaTextBox.MouseEnter
        InputLanguage.CurrentInputLanguage = PersianInput
    End Sub

    Private Sub EnTextBox_MouseEnter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles EnTextBox.MouseEnter

        InputLanguage.CurrentInputLanguage = EnglishInput

    End Sub
End Class

نویسنده : فرهاد خانلری

منبع : انجمن تخصصی فناوری اطلاعات ایران

کپی برداری با ذکر نام نویسنده و منبع مجاز خواهد بود


فرهاد خانلری
فرهاد خانلری

کارشناس ارشد شبکه مایکروسافت

فرهاد خانلری ، مدرس شبکه و برنامه نویسی مبتنی بر زیرساخت های مایکروسافت ، سابقه فعالیت در موسسات و مراکز دولتی در قالب پروژه ، مشاوره و تدریس ، برنامه نویسی ++C ، سی شارپ و دات نت ، متخصص و مدرس شبکه های مبتنی بر سیستم عاملهای مایکروسافت و سرویس های مربوطه ، سخت افزار و ...

نظرات