Как я могу вызвать строковый ресурс через имя, хранящееся в переменной?

Я хочу вызывать ресурс строкового типа внутри .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 я хочу изменить заголовок на значение файла ресурса. Конечно, я могу сделать это с чем-то вроде:

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 не является членом 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) Nothing возвращает.

Так возможно ли это? Или я должен назвать свои ресурсы по имени?

PS: я привел этот пример в VB.NET, но я могу сделать это и на C #.

Всего 1 ответ


использование

Col.HeaderText = My.Resources.Core.ResourceManager.GetString("DGV_" & Col.Name)

«Ядро» - это не часть имени элемента ресурса, а имя самого пакета ресурсов.

При использовании My.Resources.ResourceManager вы My.Resources.ResourceManager доступ к My.Resources.ResourceManager ресурсов проекта по умолчанию. Вы можете получить доступ к этому в Visual Studio в диалоговом окне свойств проекта.


Есть идеи?

10000