Tag: 资源

wpf图像资源并在运行时在wpf控件中更改图像

我想知道如何在后面的C#代码中动态使用字典资源 – 即..我想在运行时从字典中的图像资源加载图像 我有一个程序在WPF字典中有3个图像 – 这些是设置为图像资源的图像。 然后在我的WPF窗口后面的代码中,我想根据用户发起的事件加载三个图像中的任何一个。 没有真正的代码我必须展示,因为我没有做过任何工作。 想法?

我们应该在资源中存储格式字符串吗

对于我目前正在进行的项目,我必须将特殊格式的字符串提供给第三方服务进行处理。 所以我正在建立这样的字符串: string someString = string.Format(“{0}{1}{2}: Some message. Some percentage: {3}%”, token1, token2, token3, number); 而不是硬编码字符串,我正在考虑将其移动到项目资源中: string someString = string.Format(Properties.Resources.SomeString, token1, token2, token3, number); 在我看来,第二个选项不像第一个选项那么可读,即阅读代码的人必须提取字符串资源以确定最终结果应该是什么样子。 我该如何解决这个问题? 在这种情况下,硬编码格式字符串是否是必要的恶魔?

如何从C#中的资源播放.mp3文件?

我把music.mp3放在资源中,然后我将Windows Media Player添加到参考资料中。 我写了这段代码: WindowsMediaPlayer wmp = new WindowsMediaPlayer(); wmp.URL = “music.mp3”; wmp.controls.play(); 它不起作用。 我怎么能从资源中播放.mp3文件?

使用AssemblyBuilder构建资源程序集

场景:我想创建作为资源程序集的附属程序集。 该程序集仅在其中编译资源(ResourceWriter)。 目标是在VS之外创建资源程序集,并将它们添加到应用程序中,并将其添加到我的C#应用​​程序中 Atm我使用AssemblyBuilder来创建程序集。 它有效,但没有关于存储的程序集的信息。 没有cultureinfo,密钥或其他任何东西。 该应用程序没有使用Missing Manfifest Resource Exception。 🙁 如果可能的话,我想继续使用AssemblyBuilder或使用CodeDomProvider。 问题 :为我的应用添加新的卫星组件有什么必要? 是否有足够的文件夹(en-US)和一个包含en-US资源的程序集? 问题2 :是否可以向程序集提供一些元信息,如版本,文化? 问题3 :是否足以将资源添加到程序集中? 码: AssemblyBuilder builder = AppDomain.CurrentDomain.DefineDynamicAssembly( assemblyName, AssemblyBuilderAccess.RunAndSave, resourceFolder); builder.AddResourceFile(name, assemblyFileName); builder.Save(assemblyName.Name); 对于任何forms的帮助,我将不胜感激。 提前致谢

资源文件中的WinForms字符串,在设计器中连接

我正在尝试为多种语言本地化WinForms应用程序。 我试图找到一种方法来设置我的表单标签/按钮文本属性,以从设计器中的资源文件中读取(而不是必须维护一个以编程方式设置它们的代码块)。 我发现我可以设置form.Localizable = true,但是然后从表单旁边的文件中读取资源,但是我的许多资源在多个表单中共享。 有没有办法在设计器中将标签的文本设置为存储在项目级resx文件中的值?

多个用户控件和跨程序集之间的共享资源字典

我有一个包含多个用户控件的程序集。 对于此用户控件程序集,我想要一个资源字典。 程序集中的所有用户控件都应该能够访问资源字典。 我需要添加吗? … 应该使用资源字典的每个用户控件,还是有某种方法将它放在一个地方并引用它? 我可以在我的主应用程序中引用它,还是需要MergedDictionaries调用呢? 编辑:主应用程序位于与用户控件不同的项目/程序集中。

C#:如何实现智能缓存

我有一些地方可以实现某种缓存。 例如,在基于自定义字符串执行资源查找,使用reflection查找属性名称或每个属性名称只有一个PropertyChangedEventArgs 。 最后一个简单的例子: public static class Cache { private static Dictionary cache; static Cache() { cache = new Dictionary(); } public static PropertyChangedEventArgs GetPropertyChangedEventArgs( string propertyName) { if (cache.ContainsKey(propertyName)) return cache[propertyName]; return cache[propertyName] = new PropertyChangedEventArgs(propertyName); } } 但是,这会运作良好吗? 例如,如果我们有一大堆不同的propertyNames,那就意味着我们最终会有一个巨大的缓存,从来没有垃圾收集或任何东西。 我在想如果缓存的内容是更大的值,如果应用程序是一个长期运行的应用程序,这可能最终会成为一个问题……或者你怎么看? 如何实现好的缓存? 对于大多数用途,这个是否足够好? 一些很好的缓存实现的例子,这些实现不是很难理解,也不太复杂而无法实现?

C#:如何将DLL嵌入资源文件(程序目录中没有DLL复制)

我有一个需要X.dll的C#应用​​程序(项目A)。 我已将生成X.dll的项目添加到A作为Visual Studio中的参考。 我还将X.dll的发布版本添加到A中的资源文件中作为二进制文件。 我告诉项目A 不要将X.dll复制到输出目录。 现在我想要A.exe加载,说“嘿我找不到这个文件”,然后查看资源文件并使用Assembly.Load(byte [])获取X.dll。 我有代码重新魔术DLL,但这个代码永远不会被调用。 目前我有一个骨头简单的项目,只是试图让它工作。 它编译好了。 当我运行它时,我在X.dll上得到一个FileNotFoundException。 我有: [STAThread] static void Main() { AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve); } 但* CurrentDomain_AssemblyResolve *中的断点永远不会被击中。 我立即得到一个FileNotFoundException。 当然有一些我遗失的东西?

从资源加载basefont

我正在尝试使用ITextSharp并加载插入项目中的字体文件作为资源。 我尝试了不同的解决方案,但它们似乎都不起作用,这里是我所做的一个示例: 这个无法加载资源 private static BaseFont _bfArial; public static BaseFont BfArial { get { if (_bfArial == null) _bfArial = BaseFont.CreateFont(@”Resources\Images\arialuni.ttf”, BaseFont.IDENTITY_H, BaseFont.EMBEDDED); return _bfArial; } } 这个给了我一个错误:“’Identity-H’不是受支持的编码名称。” private static BaseFont _bfCourier; public static BaseFont BfCourier { get { if (_bfCourier == null) _bfCourier = BaseFont.CreateFont(“Courier”, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, true, FontsResources.cour, null); return _bfCourier; } } […]

与Properties.Resources.image的图像比较

你能告诉我为什么以下情况是假的吗? List SelectedImages = new List(); SelectedImages.Add(Properties.Resources.my_image); if (SelectedImages[0] == Properties.Resources.my_image) // false { … } 即使我写: SelectedImages[0] = Properties.Resources.my_image; if (SelectedImages[0] == Properties.Resources.my_image) // false { … } 我怎样才能进行这种比较?