VB.net Winform多国语言的实现
2009-11-10 19:42
330 查看
在.net中实现多国语言的方法其实是很简单的。
下面就做一个示例跟大家一步一步地介绍:
首先新建一个VB.net的项目。项目名称随意。
建立一个MDI表单FrmMain和一个Form1表单。
然后新建一个铺助类LanguageHelper.vb
表单设计如下:
中文语言特性界面设计如下:
英文语言特性界面设计如下:
最后看一下资源文件:
下面来看实现的代码:
首先,我们创建一个铺助类,为切换语言提供一些方法。
再来,MDI表单实现的代码如下:
From1表单是作为一个子表单供测试用的就不必写实现代码喇!^-^
避免篇幅过长,程序运行的截图我就不贴出来了!
如需要找C#的版本请查看以下链接:
/article/7244901.html
C#示例下载:http://download.csdn.net/source/1807232
VB.Net示例下载:http://download.csdn.net/source/1807230
下面就做一个示例跟大家一步一步地介绍:
首先新建一个VB.net的项目。项目名称随意。
建立一个MDI表单FrmMain和一个Form1表单。
然后新建一个铺助类LanguageHelper.vb
表单设计如下:
中文语言特性界面设计如下:
英文语言特性界面设计如下:
最后看一下资源文件:
下面来看实现的代码:
首先,我们创建一个铺助类,为切换语言提供一些方法。
]Imports System Imports System.Collections.Generic Imports System.Text Imports System.ComponentModel Imports System.Threading Imports System.Windows.Forms Imports System.Globalization Public Class LanguageHelper ''' <summary> ''' 改变程序当前使用的语言特性 ''' </summary> ''' <param name="languageName">语言名称</param> ''' <param name="frm">Form类别</param> ''' <returns></returns> ''' <remarks></remarks> Public Shared Function SetLanguage(ByVal languageName As String, ByVal frm As Form) As Boolean Try '改变当前线程的UI资源文件 Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(languageName) '改变当前线程的资源文件 Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo(languageName) '创建一个资源管理器 Dim res As ComponentResourceManager = New ComponentResourceManager(frm.GetType) '将资源文件的内容更新至表单上 $this在资源文件中表示窗体本身。 res.ApplyResources(frm, "$this") '递归更新资源文件的内容到表单控件上 ApplyResouce(frm, res) Return True Catch ex As Exception Return False End Try End Function ''' <summary> ''' 更新资源文件的内容到表单控件上 ''' </summary> ''' <param name="control">要更新的控件</param> ''' <param name="res">资源文件管理器</param> ''' Private Shared Sub ApplyResouce(ByVal control As Control, ByVal res As ComponentResourceManager) For Each c As Control In control.Controls res.ApplyResources(c, c.Name) ApplyResouce(c, res) If c.GetType().IsSubclassOf(GetType(ToolStrip)) Then ApplyResouce(CType(c, ToolStrip), res) End If Next End Sub ''' <summary> ''' set language for toolstrip all child item ''' </summary> ''' <param name="toolstrip"></param> ''' <param name="resources"></param> Private Shared Sub ApplyResouce(ByVal toolstrip As ToolStrip, ByVal resources As ComponentResourceManager) If toolstrip.Items.Count > 0 Then For Each item As ToolStripItem In toolstrip.Items ApplyResouce(item, resources) Next End If End Sub ''' <summary> ''' 递归更新Menu的子菜单 ''' </summary> ''' <param name="item"></param> ''' <param name="resources"></param> Private Shared Sub ApplyResouce(ByVal item As ToolStripItem, ByVal resources As ComponentResourceManager) resources.ApplyResources(item, item.Name) If (item.GetType.IsSubclassOf(GetType(ToolStripDropDownItem))) Then Dim ditem As ToolStripDropDownItem = CType(item, ToolStripDropDownItem) If ditem.DropDownItems.Count > 0 Then For Each sitem As ToolStripItem In ditem.DropDownItems ApplyResouce(sitem, resources) Next End If End If End Sub End Class
再来,MDI表单实现的代码如下:
]Imports System.Globalization Imports System.Threading Imports Microsoft.Win32 Public Class FrmMain Private Sub mnuChinese_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuChinese.Click Try mnuEnglish.Checked = False mnuChinese.Checked = True changeLanguage("zh-CN") Catch ex As Exception MsgBox(ex.Message) End Try End Sub Private Sub mnuEnglish_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuEnglish.Click Try mnuChinese.Checked = False mnuEnglish.Checked = True changeLanguage("en-US") Catch ex As Exception MsgBox(ex.Message) End Try End Sub ''' <summary> ''' 切换语言的时候,如果有打开子窗体,那么我们需要同时更新MDI子窗体 ''' </summary> ''' <param name="languageName"></param> ''' <remarks></remarks> Private Sub changeLanguage(ByVal languageName As String) Try LanguageHelper.SetLanguage(languageName, Me) For Each frm As Form In Me.MdiChildren LanguageHelper.SetLanguage(languageName, frm) Next Catch ex As Exception Throw ex End Try End Sub Private Sub mnuOpen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles mnuOpen.Click Dim frm As New Form1() frm.MdiParent = Me frm.Show() End Sub End Class
From1表单是作为一个子表单供测试用的就不必写实现代码喇!^-^
避免篇幅过长,程序运行的截图我就不贴出来了!
如需要找C#的版本请查看以下链接:
/article/7244901.html
C#示例下载:http://download.csdn.net/source/1807232
VB.Net示例下载:http://download.csdn.net/source/1807230
相关文章推荐
- VB.Net,WinForm中层次数据绑定TreeView的实现
- WinForm中多国语言的实现
- VB.NET Winform的一些功能实现
- 不同语言中事件的实现(VB6,VB.Net,C#,Java)
- 使用进程互斥实现WinForm程序只运行一个实例(VB.Net)
- [.NET 三层架构(ADO.NET)+Web Service+多语言]WinForm三层架构重新实现TaskVision,外加WebService提供数据和多语言
- asp.net 网站多国语言的实现
- 用最简单有效的办法实现Winform的全球化多国语言版本软件
- .NET中多语言版本的实现---WinForm
- WinForm中多国语言的实现
- [VB.NET]求如何用VB.NET语言+ACCECC数据库实现一个对会员等级自动升级功能!
- [VB.NET]如何做一个多语言(国际化)版本的winform
- 在ASP.NET 2.0中实现语言本地化(多国语言)
- ASP.NET中多国语言的实现
- WinForm中多国语言的实现
- VB程序多国语言的实现
- ASP.NET中多国语言的实现
- 软件系统多语言实现方案(重点介绍VB.net利用微软的国际化支持实现软件系统多语言)
- ASP.NET中多国语言的实现
- WinForm简单多国语言实现