栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

游标电流与此游标

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

游标电流与此游标

Windows向包含鼠标光标的窗口发送WM_SETCURSOR消息,使其有机会更改光标形状。诸如TextBox之类的控件利用了这一点,将光标更改为I型栏。Control.Cursor属性确定将使用哪种形状。

Cursor.Current属性直接更改形状,而无需等待WM_SETCURSOR响应。在大多数情况下,这种形状不太可能长期生存。用户一旦移动鼠标,WM_SETCURSOR就会将其更改回Control.Cursor。

在.NET
2.0中添加了UseWaitCursor属性,以使其更易于显示沙漏。不幸的是,它不能很好地工作。它需要WM_SETCURSOR消息来更改形状,并且将属性设置为true并花一些时间才能完成。请尝试以下代码,例如:

private void button1_Click(object sender, EventArgs e) {  this.UseWaitCursor = true;  System.Threading.Thread.Sleep(3000);  this.UseWaitCursor = false;}

光标永远不会改变。要将其变形,您还需要使用Cursor.Current。这是一个简单的帮助程序类:

using System;using System.Windows.Forms;public class HourGlass : IDisposable {  public HourGlass() {    Enabled = true;  }  public void Dispose() {    Enabled = false;  }  public static bool Enabled {    get { return Application.UseWaitCursor; }    set {      if (value == Application.UseWaitCursor) return;      Application.UseWaitCursor = value;      Form f = Form.ActiveForm;      if (f != null && f.Handle != IntPtr.Zero)   // Send WM_SETCURSOR        SendMessage(f.Handle, 0x20, f.Handle, (IntPtr)1);    }  }  [System.Runtime.InteropServices.Dllimport("user32.dll")]  private static extern IntPtr SendMessage(IntPtr hWnd, int msg, IntPtr wp, IntPtr lp);}

并像这样使用它:

private void button1_Click(object sender, EventArgs e) {  using (new HourGlass()) {    System.Threading.Thread.Sleep(3000);  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/470720.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号