在 VSTO 插件中设置 CurrentCulture

Posted

技术标签:

【中文标题】在 VSTO 插件中设置 CurrentCulture【英文标题】:Setting CurrentCulture in VSTO Addin 【发布时间】:2013-09-26 13:05:41 【问题描述】:

我正在为 Excel 2007 创建一个 VSTO 插件。在我的开发计算机上使用英语(英国)区域设置一切正常。但是,一些最终用户会有其他设置。

向数据库添加信息时一切正常,但是当我尝试使用英语(美国)区域设置填充数据表时,它会失败。

Dim TA As New DB_InquiriesTableAdapters.qry_InquiriesTableAdapter
Dim DB As New DB_Inquiries.qry_InquiriesDataTable
TA.Fill(DB) 'FAILS HERE as date format is incorrect for regional settings

我尝试在插件启动中设置 Thread.CurrentCulture 但这会抛出异常并说:

不支持 MSCORLIB 文化

有人知道如何解决这个问题吗?

【问题讨论】:

你看过这篇文章吗? ***.com/questions/2116821/… 刚刚通读,按照上面说的尝试删除文件,但还是不行。 您是否符合那里提到的条件?选择的解决方案说它是 VS 2010 Beta 的错误。 不使用 2013 Pro。反正我找到了解决办法!立即发布。 完美!然后把它写成答案。 【参考方案1】:

我的原始代码是这样的:

Imports System.Threading
Imports System.Globalization

Public Class MyClass

Public Sub MySub
    Thread.CurrentCulture=New CultureInfo("en-GB")
    Thread.CurrentUICulture=New CultureInfo("en-GB")
    ....
End Sub

End Class

尝试设置当前文化时会抛出异常。

新代码:

Public Class MyClass

Public Sub MySub
    My.Application.SetCulture("en-GB")
    ....
End Sub

End Class

该应用程序是用 VS2013 Professional 编写的 VSTO Excel 插件,该类链接到 Winforms 表单中托管的 WPF UserControl。

希望这有助于更好地解释答案。

【讨论】:

我猜My.Application.SetCulture是2013年的新方法(无法测试)。它不存在于任何以前的 VS 版本中,也找不到任何关于它的 MSDN 文档。

以上是关于在 VSTO 插件中设置 CurrentCulture的主要内容,如果未能解决你的问题,请参考以下文章

在 Zend Framework 2 中设置视图插件的最佳方法是啥?

Joomla - 在插件中设置字段属性

如何在 Cakephp 4 的另一个插件中设置对插件的依赖?

无法在 Bootstrap 的 select2 插件中设置选定值

在科尔多瓦插件中设置 NSNotification 观察者

如何在 Maven 发布插件中设置 SCM 标签?