ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 145|ตอบกลับ: 1

การทำฟอร์มหลายภาษา VB.NET

[คัดลอกลิงก์]

4

กระทู้

15

โพสต์

223

เครดิต

Full Member

Rank: 3Rank: 3

เครดิต
223

การทำฟอร์มหลายภาษา VB.NET

FrmMain :: หน้าจอหลัก
  1. Imports System.IO
  2. Public Class FrmMain
  3.     Public ListViewLangItm As ListViewItem
  4.     Public itm As ListViewItem
  5.     Dim ListViewLangStyleIndex As Byte = 0
  6.     Public DbListViewStyle() As SByte = {0, 1, 2, 3}    ''// 0 = Large , 1 = Details , 2 = List , 3 = Tiles

  7.     Private Sub FrmMain_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  8.         'ตั้งค่าการแสดงผลของ ListView.
  9.         ListViewLang.MultiSelect = False
  10.         ListViewLang.FullRowSelect = True
  11.         ListViewLang.HideSelection = False

  12.         'ซ่อนปุ่มบันทึก.
  13.         Me.BtnSave.Visible = False

  14.         'อ่านค่าภาษาที่บันทึกไว้ในไฟล์ตั้งค่าโปรแกรม.
  15.         AppSelectedLanguage = XML.ReadXML(AppConfig, "GUI", "Language")

  16.         'กำหนดค่าแหล่งที่อยู่ของไฟล์ภาษา.
  17.         AppLanguagePath = AppLangDir & "" & AppSelectedLanguage.TrimStart & ".xml"

  18.         'อ่านค่าภาษาเพื่อแสดงผล.
  19.         Call Me.LoadLanguages()

  20.         'แสดงผลภาษาไปยัง Control ต่าง ๆ.
  21.         Call ModLanguage.SetGuiLang()
  22.     End Sub

  23.     ''Private Sub SelecteLstViewItem(ByVal sRef As String, ByRef lvw As ListView)
  24.     ''    lvw.Focus()
  25.     ''    lvw.Select()
  26.     ''    Dim x As Integer

  27.     ''    For x = 0 To lvw.Items.Count - 1
  28.     ''        If lvw.Items(x).Text = sRef Then
  29.     ''            lvw.Items(x).Selected = True

  30.     ''            Exit For '-- if only 1 record   
  31.     ''        End If
  32.     ''    Next
  33.     ''End Sub

  34.     Public Sub LoadLanguages()
  35.         ''// Define Columns's Size.
  36.         ColH.Width = 100
  37.         ColN.Width = 150
  38.         ColP.Width = (Me.ListViewLang.Width - (ColH.Width + ColN.Width))

  39.         ''// Clear ListView Items.
  40.         ListViewLang.Items.Clear()

  41.         ''// Define ListView Properties.
  42.         ListViewLang.HeaderStyle = ColumnHeaderStyle.Nonclickable

  43.         ''// Set ListView Style.
  44.         Try
  45.             ''// 0 = Large , 1 = Details , 2 = List , 3 = Tiles
  46.             Select Case IO.File.Exists(AppConfig)
  47.                 Case True
  48.                     ListViewLangStyleIndex = CSByte(XML.ReadXML(AppConfig, "GUI", "ListViewLang"))
  49.                 Case False
  50.                     ListViewLangStyleIndex = 3
  51.             End Select
  52.             ''// Apply Style.
  53.             Select Case ListViewLangStyleIndex
  54.                 Case 0 : ListViewLang.View = View.LargeIcon
  55.                 Case 1 : ListViewLang.View = View.Details
  56.                 Case 2 : ListViewLang.View = View.List
  57.                 Case 3 : ListViewLang.View = View.Tile
  58.             End Select
  59.         Catch ex As Exception
  60.             ListViewLang.View = View.Tile
  61.         End Try

  62.         'ตั้งค่าการแสดงผลของ ListView.
  63.         ListViewLang.MultiSelect = False
  64.         ListViewLang.FullRowSelect = True
  65.         ListViewLang.HideSelection = False

  66.         ''// Loading Language.
  67.         ModLanguage.LoadLang()

  68.         ''// If not found Lang Directoy then exit.
  69.         If Not IO.Directory.Exists(ModLanguage.AppLangDir) Then Me.BtnSave.Enabled = False : Exit Sub

  70.         Dim supportedExtensions As String = "*.xml" '"*.xml,*.aaa,*.bbb,*.ccc,*.ddd"
  71.         Dim files As String() = Directory.GetFiles(ModLanguage.AppLangDir, "*.*", SearchOption.TopDirectoryOnly)
  72.         Array.Sort(files)

  73.         ''// Search for *.xml files and show info of files.
  74.         For Each fi As String In files
  75.             If supportedExtensions.Contains(Path.GetExtension(fi)) Then
  76.                 Dim str(3) As String

  77.                 str(0) = " " & Path.GetFileNameWithoutExtension(fi.ToString)
  78.                 str(1) = XML.ReadXML(fi.ToString, str(0), "Language")
  79.                 str(2) = fi.ToString

  80.                 ''// Set Icon.
  81.                 Select Case str(0).TrimStart.ToUpper
  82.                     Case "EN" : itm = New ListViewItem(str, 0)
  83.                     Case "TH" : itm = New ListViewItem(str, 1)
  84.                 End Select
  85.                 ''// Add New Item with icon.
  86.                 ListViewLangItm = ListViewLang.Items.Add(itm)
  87.             End If
  88.         Next

  89.         ''// Select setting value.
  90.         Select Case ListViewLang.Items.Count
  91.             Case Is > 0
  92.                 Me.BtnSave.Enabled = True
  93.                 For b As Integer = 0 To ListViewLang.Items.Count - 1
  94.                     If ListViewLang.Items(b).SubItems(0).Text = AppSelectedLanguage.TrimStart Then
  95.                         ListViewLang.Items(b).Selected = True
  96.                         Exit For
  97.                     End If
  98.                 Next b
  99.             Case Else
  100.                 'Nothing.
  101.         End Select
  102.     End Sub
  103.     Private Sub ListViewLang_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListViewLang.SelectedIndexChanged
  104.         ''// Choose Language.
  105.         If TryCast(sender, ListView).SelectedItems.Count > 0 Then
  106.             ''// Set App Language.
  107.             AppSelectedLanguage = TryCast(sender, ListView).SelectedItems.Item(0).SubItems(0).Text.TrimStart

  108.             ''// Set App Language Path.
  109.             AppLanguagePath = TryCast(sender, ListView).SelectedItems.Item(0).SubItems(2).Text

  110.             ''// Setup Gui Language.
  111.             ModLanguage.SetGuiLang()

  112.             Me.BtnSave.Visible = True
  113.         End If
  114.     End Sub
  115.     Private Sub ContextIcoLargeToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContextIcoLargeToolStripMenuItem.Click
  116.         Me.ListViewLang.View = View.LargeIcon
  117.         Me.SaveListViewStyle()
  118.     End Sub
  119.     Private Sub ContextIcoDetailsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContextIcoDetailsToolStripMenuItem.Click
  120.         Me.ListViewLang.View = View.Details
  121.         Me.SaveListViewStyle()
  122.     End Sub
  123.     Private Sub ContextIcoListToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContextIcoListToolStripMenuItem.Click
  124.         Me.ListViewLang.View = View.List
  125.         Me.SaveListViewStyle()
  126.     End Sub
  127.     Private Sub ContextIcoTilesToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ContextIcoTilesToolStripMenuItem.Click
  128.         Me.ListViewLang.View = View.Tile
  129.         Me.SaveListViewStyle()
  130.     End Sub
  131.     Public Sub SaveListViewStyle()
  132.         ''// Save Settings.
  133.         Dim StyleIdx As SByte = 0
  134.         Try
  135.             Select Case IO.File.Exists(AppConfig)
  136.                 Case True
  137.                     ''// Save Style.
  138.                     Select Case Me.ListViewLang.View
  139.                         Case View.LargeIcon : StyleIdx = DbListViewStyle(0)
  140.                         Case View.Details : StyleIdx = DbListViewStyle(1)
  141.                         Case View.List : StyleIdx = DbListViewStyle(2)
  142.                         Case View.Tile : StyleIdx = DbListViewStyle(3)
  143.                     End Select
  144.                     XML.WriteXML(AppConfig, "GUI", "ListViewLang", Format(StyleIdx, "F0"))
  145.                 Case False
  146.                     ''// 0 = Large , 1 = Details , List.
  147.                     XML.WriteXML(AppConfig, "GUI", "ListViewLang", Format(DbListViewStyle(0), "F0"))
  148.             End Select
  149.         Catch ex As Exception
  150.             'Do Not Save.
  151.         Finally
  152.             StyleIdx = 0
  153.         End Try
  154.     End Sub
  155.     Private Sub BtnSave_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnSave.Click
  156.         ''// Save Settings.
  157.         Try
  158.             Select Case IO.File.Exists(AppConfig)
  159.                 Case True : XML.WriteXML(AppConfig, "GUI", "Language", AppSelectedLanguage.TrimStart)
  160.                 Case False : XML.WriteXML(AppConfig, "GUI", "Language", AppLangSources(0))
  161.             End Select
  162.             MessageBox.Show("Saved.", "Language Saved", MessageBoxButtons.OK, MessageBoxIcon.Information)
  163.         Catch ex As Exception
  164.             MessageBox.Show(ex.Message.ToString, "Language Settings Error !", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
  165.         End Try
  166.         Me.LoadLanguages()
  167.     End Sub

  168.     Private Sub MenuExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuExit.Click
  169.         Application.Exit()
  170.     End Sub

  171.     Private Sub MenuAbout_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuAbout.Click
  172.         FrmAbout.ShowDialog()
  173.     End Sub
  174. End Class
คัดลอกไปที่คลิปบอร์ด

Code ของฟอร์มอื่น ๆ ดูภายในไฟล์โปรเจคนะครับ
หมายเหตุ : ผมทำไว้แค่ 2 ภาษานะครับ
               สาเหตุที่แยกไฟล์ภาษาออกมานอกโปรแกรมก็เพื่อให้แก้ไขข้อความภายในภาษาได้ง่ายขึ้น
               และสามารถคัดลอกไฟล์ภาษา แล้วเปลี่ยนเป็นภาษาอื่น ๆ ได้อีกโดยไม่ต้องคอมไพล์โปรแกรมใหม่ (รอพัฒนาต่อครับ)

ดาวน์โหลดไฟล์

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x

1

กระทู้

9

โพสต์

131

เครดิต

Member

Rank: 2

เครดิต
131
โพสต์ 2021-7-21 10:50:37 | ดูโพสต์ทั้งหมด

ขอบคุณมากครับ
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2021-9-22 16:07 , Processed in 0.053306 second(s), 5 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้