using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace DemoTolltip
{
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
private ToolTip lvTp = new ToolTip();
private ListViewItem currentItem = new ListViewItem();
private void Form2_Load(object sender, EventArgs e)
{
listView1.View = View.LargeIcon;
listView1.FullRowSelect = true;
// listView1.GridLines = true;
listView1.Columns.Add("Column1");
listView1.Columns.Add("Column2");
for (int i = 0; i < 10; i++)
{
ListViewItem lvi = new ListViewItem();
lvi.SubItems[0].Text = i.ToString();
lvi.ImageIndex = i;
lvi.SubItems.Add("Item" + i.ToString());
lvi.ToolTipText = "Item" + i.ToString() +"\r\n" +strShowIms; listView1.Items.Add(lvi);
}
// listView1.ShowItemToolTips = true;
listView1.MouseMove += new MouseEventHandler(listView1_MouseMove);
lvTp.OwnerDraw = true;
lvTp.Draw += new DrawToolTipEventHandler(lvTp_Draw);
lvTp.Popup += new PopupEventHandler(lvTp_Popup);
}
string strShowIms = @"sssAAAAAAA
1 AAAAAAAAAAAAAAAAAAAAA
2 AAAAAAA
2 AAAAAAA
3 AAAAAAA
4 AAAAAAA
5 AAAAAAA
6 AAAAAAA
7 AAAAAAA
8 AAAAAAA
9 AAAAAAA
";
string strText = "";
public void lvTp_Popup(object sender, PopupEventArgs e)
{
Size s = TextRenderer.MeasureText(strText, f);
e.ToolTipSize = new Size(s.Width, s.Height + 40);
}
Font f = new Font("宋体", 10.0f);
Font fTitle = new Font("宋体", 12.0f);
void lvTp_Draw(object sender, DrawToolTipEventArgs e)
{
using (e.Graphics)
{
int x = e.Bounds.Width;
int y = e.Bounds.Height;
e.DrawBackground(); SolidBrush b = new SolidBrush(Color.FromArgb(233, 240, 245));//矩形背景色
SolidBrush border = new SolidBrush(Color.FromArgb(190, 219, 249));//边框颜色
Rectangle recg = new Rectangle(0, 0, x, 30); e.Graphics.FillRectangle(b, recg);
e.Graphics.DrawRectangle(new Pen(border), recg);
e.Graphics.DrawRectangle(new Pen(border), 0, 0, x - 1, y - 1);
int tempx = x / 4;
if (x < 180 && x > 100)
{
tempx = 10;
}
else if (x <= 100)
{
tempx = 5;
}
e.Graphics.DrawImage(global::DemoTolltip.Properties.Resources.当前床位信息, new PointF(tempx, 5));
e.Graphics.DrawString("当前信息", fTitle, Brushes.Black, new PointF(tempx + 40, 7));
// e.Graphics.DrawLine(new Pen(Brushes.Blue),new Point(1,30),new Point(400,30));
e.Graphics.DrawString(e.ToolTipText, f, Brushes.Black, new PointF(4, 40));
}
} void listView1_MouseMove(object sender, MouseEventArgs e)
{
ListViewItem lvi = listView1.GetItemAt(e.X, e.Y);
if (lvi != null && lvi != currentItem)
{
strText = lvi.ToolTipText;
currentItem = lvi;
lvTp.Show(lvi.ToolTipText, listView1, e.Location);
}
else if (lvi == null)
{
strText="";
lvTp.Hide(listView1);
}
currentItem = lvi;
} }
}

  

C# ListView 自定义ToolTip 显示的更多相关文章

  1. echarts自定义tooltip显示

    使用echarts展示图形的时候,鼠标滑倒图像上,想展示除了系列名,数据名,数据值以外的数据,这时需要使用tooltip的fommater方式进行配置,另外对数据格式也有一定的要求. 如图所示:如果想 ...

  2. Echarts 的悬浮框tooltip显示自定义格式化

    最近做的项目用到echarts雷达图,但是由于地市过多,遇到悬浮框显示问题被遮住 如图: 可以看到上面从兴安开始数据就被遮住了 为了解决这个被遮住的悬浮框,达到tooltip自定义格式 完成后的效果如 ...

  3. 用WPF实现在ListView中的鼠标悬停Tooltip显示

    原文:用WPF实现在ListView中的鼠标悬停Tooltip显示 一.具体需求描述 在WPF下实现,当鼠标悬停在ListView中的某一元素的时候能弹出一个ToolTip以显示需要的信息. 二.代码 ...

  4. DevExpress.XtraGrid.GridControl 实现自定义tooltip

    DevExpress.XtraGrid.GridControl 控件默认的tooltip显示的每一个单元格的文本值,但是实际工作中会出现各种需求.我这里就有一个列是折扣率显示的值是0-1之间的两位小数 ...

  5. WPF自定义控件与样式(7)-列表控件DataGrid与ListView自定义样式

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等,若有不明白的地方可以参考本系列前面的文章,文末附有部分文章链接. 本文主要内容: Dat ...

  6. Swing图层的应用——实现tooltip显示

    没有错是世纪前的swing. 在使用Swing的时候有个问题一直没有解决,就是Swing自带的tooltip不会跟随鼠标进行移动,而且移动到边界就会遮挡的问题.JCompoent有个createToo ...

  7. 【转】WPF自定义控件与样式(7)-列表控件DataGrid与ListView自定义样式

    一.前言 申明:WPF自定义控件与样式是一个系列文章,前后是有些关联的,但大多是按照由简到繁的顺序逐步发布的等. 本文主要内容: DataGrid自定义样式: ListView自定义样式: 二.Dat ...

  8. C# 解决ListView控件显示数据出现闪屏的问题

    一.发现问题 如果发送数据过快的情况下,ListVies滚屏显示数据时会显示闪屏,如下所示现象: 二.解决问题 根据出现闪屏的情况,在网上查了资料要使用双缓存的办法来处理.其原理是数据在缓存区中进行处 ...

  9. 《连载 | 物联网框架ServerSuperIO教程》- 13.自定义视图显示接口开发,满足不同的显示需求

    1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...

随机推荐

  1. Java集合——ConcurrentHashMap

    集合是编程中最常用的数据结构.而谈到并发,几乎总是离不开集合这类高级数据结构的支持.比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap).这篇文章主 ...

  2. 将centos7打造成桌面系统

    前言以下所有操作默认在root权限下执行,桌面环境是kde,使用gnome的也可以参考一下.我收集的以下要用到的一些安装包,360网盘http://yunpan.cn/csMhBAp92vTgN 提取 ...

  3. MySql学习(六) —— 数据库优化理论(二) —— 查询优化技术

    逻辑查询优化包括的技术 1)子查询优化  2)视图重写  3)等价谓词重写  4)条件简化  5)外连接消除  6)嵌套连接消除  7)连接消除  8)语义优化 9)非SPJ优化 一.子查询优化 1. ...

  4. Install Sublime Text 3

    $ sudo add-apt-repository ppa:webupd8team/sublime-text-3 $ sudo apt-get update $ sudo apt-get instal ...

  5. solr全文检索原理及solr5.5.0 Windows部署

    文章原理链接:http://blog.csdn.net/xiaoyu411502/article/details/44803859 自己稍微总结:全文检索主要有两个过程:创建索引,搜索索引 创建索引: ...

  6. 1745. Yet Another Answer

    http://acm.timus.ru/problem.aspx?space=1&num=1745 题目大意: 可以是任意的顺序,在满足括号匹配的情况下,求组合成的字符串长度最长 思路: 先将 ...

  7. Codeforces Round #284 (Div. 2) C题(计算几何)解题报告

    题目地址 简要题意: 给出两个点的坐标,以及一些一般直线方程Ax+B+C=0的A.B.C,这些直线作为街道,求从一点走到另一点需要跨越的街道数.(两点都不在街道上) 思路分析: 从一点到另一点必须要跨 ...

  8. js初学者的div移动

    <!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8& ...

  9. android学习之线性布局

    效图如下 移通152余继彪 该布局使用了线性布局完成 父布局为线性布局,黄色和灰色部分为水平的线性布局,剩余50%部分为水平线性布局,该布局中包含了两个垂直的线性布局分别占了三分之1和三分之二

  10. 几种排序算法的学习,利用Python和C实现

    之前学过的都忘了,也没好好做过总结,现在总结一下. 时间复杂度和空间复杂度的概念: 1.空间复杂度:是程序运行所以需要的额外消耗存储空间,一般的递归算法就要有o(n)的空间复杂度了,简单说就是递归集算 ...