gpt4 book ai didi

c# - .resx 表单图标级联更新

转载 作者:太空宇宙 更新时间:2023-11-03 17:03:24 26 4
gpt4 key购买 nike

假设我们有一个 Windows 窗体 Form1,我们为其设置了一个图标。 Visual Studio 会将图标存储在 Form1.resx ($this.Icon) 中。

现在我们决定将应用程序本地化为 N 种语言,因此我们将 Localizable 设置为 True,我们从语言选项中选择第一种语言,翻译文本,然后继续下一种语言重复该过程(选择另一种语言并翻译) 最多 N 个。结果将是 N 个包含带有原始图标的 $this.Icon 条目的 .resx 文件。

然后我们意识到我们想要更新表单图标,所以我们将语言设置为“(默认)”并设置新图标。令我们惊讶的是,我们发现 N 个 .resx 文件没有更新。

我们是否必须手动更新 N 个 .resx 文件?是否有类似级联更新的东西?在这种情况下,您会怎么做才能避免更新 N 个图标?

最佳答案

我刚刚将代码添加到我的 Program.Main 以修改所有解决方案 .resx 文件以删除 Form.Icon。

    try
{
string solutionDirPath = @"path\to\solution";
string[] resxFilePaths = Directory.GetFiles(solutionDirPath, "*.resx", SearchOption.AllDirectories);
foreach (string resxFilePath in resxFilePaths)
{
XDocument xdoc = XDocument.Load(resxFilePath);
var iconElement = xdoc.Root.Elements("data").SingleOrDefault(el => (string)el.Attribute("name") == "$this.Icon");
if (iconElement != null)
{
iconElement.Remove();
xdoc.Save(resxFilePath);
}
}
}
catch (Exception ex)
{

}
finally
{

}

我的箱子大小几乎减少了两倍!

此外,对于所有表单,我将只使用我的应用程序可执行文件中的图标

Icon.ExtractAssociatedIcon(Application.ExecutablePath)

关于c# - .resx 表单图标级联更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15340615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com