در این ویدئو ریسورس های رشته ای از یک فایل ریسورس (Resources File) .ResX به DataTable اضافه می شه که در DataGrid نمایش داده بشن....
Dim OFD As New OpenFileDialog With {.Filter = "Resources File|*.resx"}
Dim FileName As String = ""
With OFD
.SupportMultiDottedExtensions = False
.Multiselect = False
ReBrowse:
If .ShowDialog(Me) = DialogResult.Cancel Then Exit Sub
FileName = .FileName
If IO.Path.GetFileNameWithoutExtension(FileName).Contains(".") = True Then
FileName = IO.Path.GetFileNameWithoutExtension(FileName)
FileName = IO.Path.GetFileNameWithoutExtension(FileName)
FileName = String.Format("{0}\{1}.resx", FileIO.FileSystem.GetParentPath(.FileName), FileName)
End If
Me.ToolStripTextBox1.Text = FileName
resReader = New Resources.ResXResourceReader(FileName)
Resources.Clear()
Resources.Add("(Default)", resReader)
Dim Name, Value As Object
resReader.GetEnumerator.Reset()
Dim dict As IDictionaryEnumerator = resReader.GetEnumerator
Do While dict.MoveNext = True
' resSet.GetEnumerator.MoveNext()
Name = dict.Key
Value = dict.Value
If TypeOf (Value) Is String Then
With MultiLanguageDataTable
.Rows.Add(Name, Value)
End With
End If
Loop
End With
در این ویدئوی آموزشی یک DataGrid داریم که قبل از هر چیز باید یک DataTable برای DataSource اون تعیین بشه و همزمان با اضافه کردن ستون های DataTable به ستونهای DataGridTableStyle هم اضافه می شه....
Dim MultiLanguageDataTable As New DataTable("MultiLanguageDataTable")
With MultiLanguageDataTable
MultiLanguageTableStyle.MappingName = .TableName
MultiLanguageTableStyle.PreferredColumnWidth = 250
.Columns.Clear()
With .Columns.Add("ResName")
.Caption = "Resource Name"
End With
DataColumn = New DataGridTextBoxColumn
With DataColumn
.HeaderText = "Resource Name"
.MappingName = "ResName"
Width_ = g.MeasureString(.HeaderText, Me.DataGrid1.HeaderFont).Width
.Width = If(Width_ < MultiLanguageTableStyle.PreferredColumnWidth, MultiLanguageTableStyle.PreferredColumnWidth, Width_)
End With
MultiLanguageTableStyle.GridColumnStyles.Clear()
Index = MultiLanguageTableStyle.GridColumnStyles.Add(DataColumn)
For Each Item As ListViewItem In Me.ListView1.Items
With .Columns.Add(Item.SubItems(3).Text)
.Caption = Item.SubItems(2).Text
End With
DataColumn = New DataGridTextBoxColumn
With DataColumn
.HeaderText = Item.SubItems(1).Text
.MappingName = Item.SubItems(3).Text
Width_ = g.MeasureString(.HeaderText, Me.DataGrid1.HeaderFont).Width
.Width = If(Width_ < MultiLanguageTableStyle.PreferredColumnWidth, MultiLanguageTableStyle.PreferredColumnWidth, Width_)
End With
Index = MultiLanguageTableStyle.GridColumnStyles.Add(DataColumn)
Next
End With
در این آموزش برای اضافه کردن یک زبان به برنامه مورد نظر ابتدا زبانها به یک آرایه اضافه و سپس DisplayName از زبانها به ComboBox و LCID به یک لیست از دیتا تایپی با کلاس Integer و نهایتها اطلاعات Culture به ListView اضافه می شه....
Dim Cultures() As CultureInfo = CultureInfo.GetCultures(CultureTypes.AllCultures)
Dim LanguageList As New List(Of Integer)
Dim Index As Integer = -1
With Me.LanguaheComboBox
For Each Culture As CultureInfo In Cultures
If Culture.LCID = 127 Then Continue For
Index = .Items.Add(Culture.DisplayName)
LanguageList.Insert(Index, Culture.LCID)
Next
If .Items.Count > 0 Then
.SelectedIndex = 0
End If
End With
Dim Culture_ As CultureInfo = CultureInfo.GetCultureInfo(LanguageList(Me.LanguaheComboBox.SelectedIndex))
With Me.ListView1.Items
With .Add((.Count + 1).ToString, 0)
.SubItems.Add(Culture_.EnglishName)
.SubItems.Add(Culture_.DisplayName)
.SubItems.Add(Culture_.Name)
.SubItems.Add(Culture_.LCID)
End With
End With

Private Sub ChangeLanguageToolStripMenuItem_DropDownItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles ChangeLanguageToolStripMenuItem.DropDownItemClicked
Dim Id As String = e.ClickedItem.Tag.ToString
Dim Result As MsgBoxResult = MsgBox(String.Format("{1}{0}{0}{2}", vbCrLf, ChangeLabguageMessage, ChangeLabguageMessage(Id)), MsgBoxStyle.YesNo)
If Result = MsgBoxResult.No Then Exit Sub
My.Settings.LanguageId = e.ClickedItem.Tag.ToString
My.Settings.Save()
Application.Restart()
End Sub
در این آموزش برای یک نرم افزار چندزبانه به تعداد زبانها Resources File ایجاد شده و یک کلاسی استفاده می شه که قادر است طبق زبان انتخاب شده متن را از ریسورس فراخوانی و نمایش دهد....
Public Class CurrentResources
Private Shared ManagerValue As New Resources.ResourceManager("<ProjectAssembly.ResourcesName>", GetType(<AnyClassesOfProject>).Assembly)
Public Shared ReadOnly Property Manager() As Resources.ResourceManager
Get
Return ManagerValue
End Get
End Property
Public Shared ReadOnly Property Strings(resName As String) As String
Get
Return Manager.GetString(resName)
End Get
End Property
Public Shared ReadOnly Property ChangeLabguageMessage() As String
Get
Return Manager.GetString("ChangeLabguageMessage")
End Get
End Property
End Class