gpt4 book ai didi

c# - 如何在 C# Winforms 中创建嵌入式资源游标?

转载 作者:行者123 更新时间:2023-11-30 13:15:31 24 4
gpt4 key购买 nike

我正在尝试将自定义光标作为嵌入式资源添加到 C# Winforms 应用程序。嵌入部分似乎没有像文档暗示的那样工作。

如果我在运行时从文件加载游标,它就可以正常工作:

myMagCursor = new Cursor("../Resources/magnify.cur");

看来光标文件是好的。我关注了这个信息 MSDN嵌入光标(来自 C# 示例中的注释):

//In Visual Studio:
// 1. Select the cursor file in the Solution Explorer
// 2. Choose View->Properties.
// 3. In the properties window switch "Build Action" to "Embedded"

然后尝试像这样使用它:

myMagCursor = new Cursor(GetType(), "magnify.cur");

这给出了一个空引用异常,我假设是因为找不到资源。我也尝试过这种方法(在网络上的其他地方找到):

namespace Piccolo.Forms
{
public partial class Hanger
{
...
Assembly asm = Assembly.GetExecutingAssembly();
using( Stream resStream = asm.GetManifestResourceStream("Piccolo.magnify.cur") )
{
myMagCursor = new Cursor( resStream );
}

我试过“Piccolo.magnify.cur”、“Piccolo.Forms.magnify.cur”、“Piccolo.Forms.Hanger.magnify.cur”、“Hanger.magnify.cur”等。我推断光标尚未嵌入。

光标文件位于 Resources 文件夹中,其中包含一堆 .ico、.png 和 .jpg 文件,它们都可以作为工具条按钮正常工作,并出现在项目的“Resources.resx”文件(?)中。它们都没有“嵌入式资源”属性。我的光标文件确实有“嵌入式资源”,但没有出现在“Resources.resx”中。

要正确嵌入光标文件,我缺少什么?

最佳答案

我已经了解了您在 WPF 应用程序中使用的第二种方法。无论如何,该部分都应该工作相同,因为它们都使用相同类型的资源流。这是我成功使用的线路。

canvas1.Cursor = new Cursor(Assembly.GetExecutingAssembly().GetManifestResourceStream("WpfApplication2.mallet.cur"));

很可能,您将光标放在某种文件夹中,因此“Piccolo.magnify.cur”部分是错误的。您可以做的是将所有资源流名称打印到文本框或其他内容,以准确查看您应该放在那里的内容。使用以下方法完成此操作:

String[] resourceNames = Assembly.GetExecutingAssembly().GetManifestResourceNames();

然后根据您的选择打印出来。这应该会为您指明正确的方向。

关于c# - 如何在 C# Winforms 中创建嵌入式资源游标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7097044/

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