C#工具提示:需要将光标可见性设置为false吗
当工具提示可见时,是否可以将光标可见性设置为false;当工具提示消失时,是否可以将光标可见性设置为true 正如sa_ddam213所说: 只需使用C#工具提示:需要将光标可见性设置为false吗,c#,.net,winforms,C#,.net,Winforms,当工具提示可见时,是否可以将光标可见性设置为false;当工具提示消失时,是否可以将光标可见性设置为true 正如sa_ddam213所说: 只需使用 或者,您可以手动执行此操作,方法是在ToolTip.Show()之前和ToolTip.Hide()之后设置一个透明的光标图像,只需显示普通光标: CursorHandler.LoadCursor("ProjName.Resources.Invisible.cur"); ToolTip.Show(); 以下是CursorHandler代码(我
或者,您可以手动执行此操作,方法是在
ToolTip.Show()
之前和ToolTip.Hide()之后设置一个透明的光标图像,只需显示普通光标:
CursorHandler.LoadCursor("ProjName.Resources.Invisible.cur");
ToolTip.Show();
以下是CursorHandler代码(我从中获得):
是的,这是可能的,只要在tootip打开时将光标设置为none,然后在打开时将光标设置回nonecloses@sa_ddam213回答这个问题?:)让用户很难消除工具提示只是恶意的。不要这样做。很难相信这样做会像隐藏光标一样。工具提示窗口自己控制光标,您无法轻松访问它们的消息处理程序。特别值得注意的是,根本没有使用LoadCursor()的返回值。你真的测试过吗?
ToolTip.Hide();
CursorHandler.LoadCursor("ProjName.Resources.Normal.cur");
public class CursorHandler
{
[DllImport("user32.dll")]
private static extern IntPtr LoadCursorFromFile(string fileName);
public static Cursor LoadCursor(string resourcePath)
{
Cursor c = new Cursor(getCursorHandle(resourcePath));
return c;
}
private static IntPtr getCursorHandle(string resourcePath)
{
//Load cursor from Manifest Resource to Stream
Stream streamFrom =
Assembly.GetExecutingAssembly().GetManifestResourceStream(resourcePath);
Stream streamTo =
File.Create(Environment.GetEnvironmentVariable("TEMP") + @"\~cur.tmp");
BinaryReader br = new BinaryReader(streamFrom);
BinaryWriter bw = new BinaryWriter(streamTo);
//Write cursor to temporary file
bw.Write(br.ReadBytes((int)streamFrom.Length));
bw.Flush();
bw.Close();
br.Close();
bw = null;
br = null;
streamFrom.Close();
streamTo.Close();
streamFrom = null;
streamTo = null;
//Load handle of temporary cursor file
IntPtr hwdCursor = LoadCursorFromFile(
Environment.GetEnvironmentVariable("TEMP") + @"\~cur.tmp");
//Delete temporary cursor file
File.Delete(Environment.GetEnvironmentVariable("TEMP") + @"\~cur.tmp");
return hwdCursor;
}