在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开发的一些系统,经常要求支持多语言(例如日文,英文等),以前大部分做法是创建一个资源文件, 将每一个标签,按钮等标题文字预先用各种语言设定保存好, 在程序中根据选择的语言来显示对应文字。 这样做的缺点是如果每次改动或增加一个控件,都需要程序开发人员刻意做多语言对应, 如果用户想要改某些标题的描述,还需要开发人员改动资源文件并替换到程序发布目录。 经过调查实验,最终想了一个办法来较好地对应此问题: 在每一个web页面,设定一个只有最高级的管理权限才能看到的一个按钮(例如叫“设定”), 来负责画面上各固定标题的设置,只要点击这个按钮,就通过控件遍历的方法来显示该页面上所有希望控制的 控件(比如Label,button,gridview,linkbutton等), 将其各种语言的内容显示到一个小页面上,让用户自己设定, 然后保存到DB。下次打开时就按照DB设定好的内容初期化页面控件的标题。 最终用户可自由设定,也无需开发人员不停修改。 画面效果如下: 点击“设定” 下面举例,循环设定页面中控件(TextBox,DropDownList等)不可用的代码: 复制代码 代码如下: Public Shared Sub LoopingControlsDisabled(ByVal oControl As Control) Dim frmCtrl As Control Dim btn As Button For Each frmCtrl In oControl.Controls If TypeOf frmCtrl Is TextBox Then DirectCast(frmCtrl, TextBox).Enabled = False End If If TypeOf frmCtrl Is DropDownList Then DirectCast(frmCtrl, DropDownList).Enabled = False End If If TypeOf frmCtrl Is CheckBox Then DirectCast(frmCtrl, CheckBox).Enabled = False End If If TypeOf frmCtrl Is RadioButton Then DirectCast(frmCtrl, RadioButton).Enabled = False End If If TypeOf frmCtrl Is FileUpload Then DirectCast(frmCtrl, FileUpload).Enabled = False End If If TypeOf frmCtrl Is Button Then btn = DirectCast(frmCtrl, Button) 'If btn.Text.Equals("关闭") OrElse btn.ID.Equals("btnClose") Then If btn.ID.Equals("btnClose") Then '仅关闭按钮可用 btn.Enabled = True Else btn.Enabled = False End If End If If frmCtrl.HasControls Then LoopingControlsDisabled(frmCtrl) End If Next End Sub |
请发表评论