如何通过存储在变量中的名称调用字符串资源?
How can I call a string resource via a name stored in a variable?
我想通过存储在变量中的名称调用 .resx 中的字符串类型资源。
假设我有一个 DataGridView1
包含这些列:
| Kiwi | Apple | Grape | 'these are the columns name
我有一个 Core.resx
来存储我的资源:
| Name | Value | Comment | 'note how the name of the resource
| DGV_Kiwi | Hairy Kiwi | | 'is "DGV_" & column.Name
| DGV_Apple | Red Apple | |
| DGV_Grape | White Grape | |
加载时DataGridView1
我想把header改成资源文件的值。当然,我可以用类似的东西来做:
DataGridView1.Columns(0).HeaderText = My.Resources.Core.DGV_Kiwi
DataGridView1.Columns(1).HeaderText = My.Resources.Core.DGV_Apple
DataGridView1.Columns(2).HeaderText = My.Resources.Core.DGV_Grape
不过我比较懒,实际项目中的专栏比较多。所以我想用一个循环来做这个。
这是我尝试过的第一件事:
For Each Col As DataGridViewColumn In Me.DataGridView1.Columns
Col.HeaderText = My.Resources.Core.Col.Name
Next
当然这样不行:
Col is not a member of Core
我也试过这个:
For Each Col As DataGridViewColumn In Me.DGVComps.Columns
Col.HeaderText = My.Resources.ResourceManager.GetObject("Core.DGV_" & Col.Name)
Next
但是My.Resources.ResourceManager.GetObject("Core.DGV_" & Col.Name)
returnsNothing
.
所以这件事可能吗?或者我必须按名称调用我的资源吗?
PS:我已经在 VB.NET 中给出了这个示例,但我也可以在 C# 中实现它。
使用
Col.HeaderText = My.Resources.Core.ResourceManager.GetString("DGV_" & Col.Name)
"Core"不是资源项名称的一部分,而是资源包本身的名称。
使用My.Resources.ResourceManager
时,您访问项目的默认资源包。您可以在项目属性对话框的 Visual Studio 中访问它。
我想通过存储在变量中的名称调用 .resx 中的字符串类型资源。
假设我有一个 DataGridView1
包含这些列:
| Kiwi | Apple | Grape | 'these are the columns name
我有一个 Core.resx
来存储我的资源:
| Name | Value | Comment | 'note how the name of the resource
| DGV_Kiwi | Hairy Kiwi | | 'is "DGV_" & column.Name
| DGV_Apple | Red Apple | |
| DGV_Grape | White Grape | |
加载时DataGridView1
我想把header改成资源文件的值。当然,我可以用类似的东西来做:
DataGridView1.Columns(0).HeaderText = My.Resources.Core.DGV_Kiwi
DataGridView1.Columns(1).HeaderText = My.Resources.Core.DGV_Apple
DataGridView1.Columns(2).HeaderText = My.Resources.Core.DGV_Grape
不过我比较懒,实际项目中的专栏比较多。所以我想用一个循环来做这个。
这是我尝试过的第一件事:
For Each Col As DataGridViewColumn In Me.DataGridView1.Columns
Col.HeaderText = My.Resources.Core.Col.Name
Next
当然这样不行:
Col is not a member of Core
我也试过这个:
For Each Col As DataGridViewColumn In Me.DGVComps.Columns
Col.HeaderText = My.Resources.ResourceManager.GetObject("Core.DGV_" & Col.Name)
Next
但是My.Resources.ResourceManager.GetObject("Core.DGV_" & Col.Name)
returnsNothing
.
所以这件事可能吗?或者我必须按名称调用我的资源吗?
PS:我已经在 VB.NET 中给出了这个示例,但我也可以在 C# 中实现它。
使用
Col.HeaderText = My.Resources.Core.ResourceManager.GetString("DGV_" & Col.Name)
"Core"不是资源项名称的一部分,而是资源包本身的名称。
使用My.Resources.ResourceManager
时,您访问项目的默认资源包。您可以在项目属性对话框的 Visual Studio 中访问它。