Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Windows拖动复制光标_C#_.net_Winforms - Fatal编程技术网

C# 使用Windows拖动复制光标

C# 使用Windows拖动复制光标,c#,.net,winforms,C#,.net,Winforms,我可以像这样设置光标: Me.Cursor = Cursors.Cross 使用IntelliSense,我找不到此“复制”光标: 有没有办法以有管理的方式获得它? 我不想加载位图左右。 我想让Windows来决定,因为用户可能更改了光标大小或设置了不同的颜色模式。拖放光标属于ole32.dll。您可以从该库加载它们。为此,需要使用加载ole32.dll,然后使用获取这些游标的句柄。您可以使用1到7作为LoadCursor参数从ole32.dll获取游标。您要查找的光标是3或6: 这是一个

我可以像这样设置光标:

Me.Cursor = Cursors.Cross
使用IntelliSense,我找不到此“复制”光标:

有没有办法以有管理的方式获得它? 我不想加载位图左右。
我想让Windows来决定,因为用户可能更改了光标大小或设置了不同的颜色模式。

拖放光标属于
ole32.dll
。您可以从该库加载它们。为此,需要使用加载
ole32.dll
,然后使用获取这些游标的句柄。您可以使用1到7作为
LoadCursor
参数从
ole32.dll
获取游标。您要查找的光标是
3
6


这是一个拖动光标,当您执行拖放功能时会自动出现。@Sunil谢谢。编辑了我的标题。没有拖动就无法调用它吗?拖放游标是后来的附加组件,从来都不是系统游标的一部分。您可以窃取它们,使用文件>打开>文件并选择c:\windows\system32\ole32.dll。打开游标节点,右键单击>导出。实现自己的D+D而不是使用标准的DoDragDrop()和friends几乎总是一个非常糟糕的主意。我使用VisualStudio文件导出了这些游标→打开对于光标、图标和其他资源,您始终可以执行相同的操作。您还可以将它们作为嵌入式资源添加到应用程序中。此外,如果是标准的拖放操作,则最好依赖标准游标,该游标是基于拖放事件中的
e.Effect
设置的。
[DllImport("kernel32.dll")]
public static extern IntPtr LoadLibrary(string dllToLoad);

[DllImport("user32.dll")]
public static extern IntPtr LoadCursor(IntPtr hInstance, UInt16 lpCursorName);

private void button1_Click(object sender, EventArgs e)
{
    var l = LoadLibrary("ole32.dll");
    var h = LoadCursor(l, 6);
    this.Cursor = new Cursor(h);
}