Как я могу вызвать строковый ресурс через имя, хранящееся в переменной? - PullRequest
2 голосов
/ 16 января 2020

Я хочу вызывать ресурс строкового типа внутри .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

Но я ленивый и у меня намного больше столбцов в моем реальном проекте. Поэтому я хочу сделать это с al oop.

Это первое, что я попробовал:

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 Ответ

1 голос
/ 16 января 2020

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...