如何防止长字符串被写入resx文件

时间:2013-02-22 19:46:05

标签: c# visual-studio designer resx

即使我的表单未设置为本地化,但如果我的文本长度超过200个字符,Visual Designer会将文本放入.resx而不是直接放入代码中。

这是一个问题,因为我使用的是自定义本地化方法,可以从代码中提取可本地化的字符串,但它不会搜索resx文件。

有没有办法防止这种行为?我可以在我的代码中对字符串进行硬编码,以便提取器可以获取它,但这很烦人,因为在Designer中文本看起来不对。或者,我可以使用多个标签,但这感觉不对。

我见过其他人在其他论坛上提出类似的问题,但没有答案。

1 个答案:

答案 0 :(得分:0)

我没有完整的解决方案,但可以扫描与类型相关的资源,并找到设计师决定执行此操作的字符串。

            var resources = new ResourceManager(type);
            using (var set = resources.GetResourceSet(CultureInfo.InvariantCulture, true, false))
            {
                if (set != null)
                {
                    foreach (DictionaryEntry res in set)
                    {
                        var key = res.Key as string;
                        var val = res.Value as string;
                        if (key == null || val == null)
                            continue;
                        if (!key.EndsWith(".Text"))
                            continue;
                        key = key.Substring(0, key.Length - ".Text".Length);
                        // key is now the name of your control
                        // val is the string the designer stored as its Text in the default resource
                    }
                }
            }