[WinForm]ToolTip 使用小计

关键代码:

using System.Drawing;
using System.Windows.Forms;

namespace WinFormUtilHelpV2
{
    /// <summary>
    /// 基于.NET 2.0的Tooltip工具类
    /// </summary>
    public static class TooltipToolV2
    {
        /// <summary>
        /// 为控件提供Tooltip
        /// </summary>
        /// <param name="control">控件</param>
        /// <param name="tip">ToolTip</param>
        /// <param name="message">提示消息</param>
        public static void ShowTooltip(this Control control, ToolTip tip, string message)
        {
            Point _mousePoint = Control.MousePosition;
            int _x = control.PointToClient(_mousePoint).X;
            int _y = control.PointToClient(_mousePoint).Y;
            tip.Show(message, control, _x, _y);
            tip.Active = true;
        }
        /// <summary>
        /// 为控件提供Tooltip
        /// </summary>
        /// <param name="control">控件</param>
        /// <param name="tip">ToolTip</param>
        /// <param name="message">提示消息</param>
        /// <param name="durationTime">保持提示的持续时间</param>
        public static void ShowTooltip(this Control control, ToolTip tip, string message, int durationTime)
        {
            Point _mousePoint = Control.MousePosition;
            int _x = control.PointToClient(_mousePoint).X;
            int _y = control.PointToClient(_mousePoint).Y;
            tip.Show(message, control, _x, _y, durationTime);
            tip.Active = true;
        }
        /// <summary>
        /// 为控件提供Tooltip
        /// </summary>
        /// <param name="control">控件</param>
        /// <param name="tip">ToolTip</param>
        /// <param name="message">提示消息</param>
        /// <param name="xoffset">水平偏移量</param>
        /// <param name="yoffset">垂直偏移量</param>
        public static void ShowTooltip(this Control control, ToolTip tip, string message, int xoffset, int yoffset)
        {
            Point _mousePoint = Control.MousePosition;
            int _x = control.PointToClient(_mousePoint).X;
            int _y = control.PointToClient(_mousePoint).Y;
            tip.Show(message, control, _x + xoffset, _y + yoffset);
            tip.Active = true;
        }
        /// <summary>
        /// 为控件提供Tooltip
        /// </summary>
        /// <param name="control">控件</param>
        /// <param name="tip">ToolTip</param>
        /// <param name="message">提示消息</param>
        /// <param name="xoffset">水平偏移量</param>
        /// <param name="yoffset">垂直偏移量</param>
        /// <param name="durationTime">保持提示的持续时间</param>
        public static void ShowTooltip(this Control control, ToolTip tip, string message, int xoffset, int yoffset, int durationTime)
        {
            Point _mousePoint = Control.MousePosition;
            int _x = control.PointToClient(_mousePoint).X;
            int _y = control.PointToClient(_mousePoint).Y;
            tip.Show(message, control, _x + xoffset, _y + yoffset, durationTime);
            tip.Active = true;
        }
    }
}

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }使用示例:

using System;
using System.Windows.Forms;
using WinFormUtilHelpV2;

namespace TooltipToolV2Test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            button1.ShowTooltip(toolTip, "button1_Click");
        }
        private void listBox1_Click(object sender, EventArgs e)
        {
            listBox1.ShowTooltip(toolTip, "listBox1_Click", 500);
        }
    }
}

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }代码效果:

[WinForm]ToolTip 使用小计

时间: 2024-10-10 00:35:15

[WinForm]ToolTip 使用小计的相关文章

汽车仪表是如何计算总计里程和小计里程的?

现在汽车仪表大部分的总计里程和小计里程都是显示在屏幕上的,这包括段码屏.点阵屏.TFT彩屏等,虽然显示形式不一样,但是从业务需求和软件应用层的实现策略来讲,原理应该都是通用的.本文不涉及具体车型,仅对一般的业务逻辑作介绍,一是为了自己总结记录,二是期望吸引同行或爱好者交流. 1.总计里程 ODO(Total Odometer )即总计里程,顾名思义,主要作用是记录汽车总的行驶里程,一般来讲,在用户使用过程中是无法对其修改或清零的,因为它是对二手汽车价值评估的一项重要数值,当然随意篡改这一数据也是

traits技法小计

在学习算法导论的时候,对于各数据结构,自然是实现一个才算掌握,工具当然是template编程,但是自己的demo经常存在很多问题,比如没有给出迭代器啊,操作符重载不够啊等等设计上的问题,而某些问题实际上是从设计之初就该考虑的大框架,而非小细节.对于C++而言,STL无疑是最佳的参考资料,侯捷先生的STL源码剖析一书给我们良好的示范,而直接从第四章开始看会云里雾里,无法得其精髓,因此在学习算法之余决定尾随侯捷先生脚步,学习STL traits技法,从而可以从STL中学到更多的数据结构实现. 收获自

设计模式小计——23种设计模式3

责任链模式Chain of Responsibility 使多个对象都有机会处理请求,从而避免请求的发送者和接受者间的耦合关系,并沿着这条链传递请求,直到有对象处理它为止 责任链模式关键是建立链接关系,在链中决定谁来处理请求 //抽象处理者 public abstract class Handle{ private Handle nextHandle;//链的下一个节点 public final Response handleMessage(Request request){ Response

设计模式小计——23种设计模式1

单例模式Singleton Pattern 确保类只有一个实例,而且自行实例化并向整个系统提供这个实例 public class Singleton{ private static final Singleton singleton = new Singleton(); private Singleton(){} public static Singleton getSingleton(){ return singleton; } } 节省内存开支,减少性能开销,应用启动产生单例对象,永久驻留内

设计模式小计——23种设计模式2

模板方法模式Template Method Pattern 定义一个操作的算法的框架,是的子类可以不改变算法结构即可重定义该算法一些特定步骤 public abstract class AbstractClass{//抽象模板类 protected abstract void method1();//算法步骤1 protected abstract void method2();//算法步骤2 public void templateMethod(){//模板方法,定义算法结构 this.met

Sql使用WITH ROLLUP 进行分类汇总及小计功能

效果如下: 测试代码如下: CREATE TABLE #test    (      Name VARCHAR(10) ,      [procedure] CHAR(1) ,      model VARCHAR(5) ,      quantity INT    ); INSERT  INTO #test        SELECT  'A' ,                '1' ,                'φ50' ,                500        UNI

RandomStrngUtils工具类小计

//产生5位长度的随机字符串,中文环境下是乱码 RandomStringUtils.random(5); //使用指定的字符生成5位长度的随机字符串 RandomStringUtils.random(5, new char[]{'a','b','c','d','e','f', '1', '2', '3'}); //生成指定长度的字母和数字的随机组合字符串 RandomStringUtils.randomAlphanumeric(5); //生成随机数字字符串 RandomStringUtils.

c++11小计

[capture] (parameters) mutable -> return-type { statement } " (parameters)" 和 "-> return-type"在不需要的情况下可省略. mutable:mutable修饰符.默认情况下,lambda函数总是一个const函数,mutable可以取消常量性.在使用该修饰符时,参数列表不可省略(即使为空). 在使用lambda函数的时候,如果需要捕捉的值成为lambda函数的常量,

小计使用多线程和gevent来提高celery性能及稳定性

前言: 有朋友问我,我那个任务队列是怎么实现,他的疑问其实主要是celery不支持多线程.先说说我那实现的方法,其实我的做法和celery.rq这样的框架很像的,都是把任务push到队列里面,然后pull取出任务而已,celery里面还可以取任务,我这个是通过传送uuid来实现的.   朋友问celery不支持多线程,那是他没有好好看文档.celery是支持多任务并发的,哎... 好好看文档呀. 原文:http://rfyiamcool.blog.51cto.com/1030776/153082