用win32API 实现TextBox水印特效
demo效果:
aaarticlea/png;base64,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" alt="" />
(1)创建一个SetWaterText静态类
需要添加的两个引用:using System.Runtime.InteropServices;using System.Windows.Forms;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms; namespace 水印特效
{
public static class SetWaterText
{
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern Int32 SendMessage(IntPtr hWnd, int msg,
int wParam, [MarshalAs(UnmanagedType.LPWStr)] string lParam); [DllImport("user32.dll")]
private static extern bool SendMessage(IntPtr hwnd, int msg, int wParam, StringBuilder lParam); [DllImport("user32.dll")]
private static extern bool GetComboBoxInfo(IntPtr hwnd, ref COMBOBOXINFO pcbi); [StructLayout(LayoutKind.Sequential)]
private struct COMBOBOXINFO
{
public int cbSize;
public RECT rcItem;
public RECT rcButton;
public IntPtr stateButton;
public IntPtr hwndCombo;
public IntPtr hwndItem;
public IntPtr hwndList;
} [StructLayout(LayoutKind.Sequential)]
private struct RECT
{
public int left;
public int top;
public int right;
public int bottom;
} private const int EM_SETCUEBANNER = 0x1501;
private const int EM_GETCUEBANNER = 0x1502; public static void SetCueText(Control control, string text)
{
if (control is ComboBox)
{
COMBOBOXINFO info = GetComboBoxInfo(control);
SendMessage(info.hwndItem, EM_SETCUEBANNER, , text);
}
else
{
SendMessage(control.Handle, EM_SETCUEBANNER, , text);
}
} private static COMBOBOXINFO GetComboBoxInfo(Control control)
{
COMBOBOXINFO info = new COMBOBOXINFO();
//a combobox is made up of three controls, a button, a list and textbox;
//we want the textbox
info.cbSize = Marshal.SizeOf(info);
GetComboBoxInfo(control.Handle, ref info);
return info;
} public static string GetCueText(Control control)
{
StringBuilder builder = new StringBuilder();
if (control is ComboBox)
{
COMBOBOXINFO info = new COMBOBOXINFO();
//a combobox is made up of two controls, a list and textbox;
//we want the textbox
info.cbSize = Marshal.SizeOf(info);
GetComboBoxInfo(control.Handle, ref info);
SendMessage(info.hwndItem, EM_GETCUEBANNER, , builder);
}
else
{
SendMessage(control.Handle, EM_GETCUEBANNER, , builder);
}
return builder.ToString();
}
//SetWaterText.SetCueText(TextBox1,"fdsadf")
}
}
(2)调用即可
private void button1_Click(object sender, EventArgs e)
{
SetWaterText.SetCueText(textBox1, "请填写用户名");
SetWaterText.SetCueText(textBox2, "请填写密码");
}
用win32API 实现TextBox水印特效的更多相关文章
- WPF实现TextBox水印效果
在日常项目中,一个TextBox需要输入用户名,我们通常的做法是先用一个TextBlock来说明,例如下面的截图: 今天将使用另外一种方式来展示,使用水印的方式.请参考下面的代码: <Windo ...
- WPF的TextBox水印效果详解
一种自以为是的方式: 本来只是想简单的做个水印效果,在文本框内容为空的时候提示用户输入,这种需求挺常见.网上一搜 都是丢给你你一大段xaml代码.用c#代码实现我是不倾向了 既然用wpf就得Xaml啊 ...
- WPF 最简单的TextBox水印
最简单的TextBox加水印的方法,但是不具有很强的通用性. 如果你只是使用一次,或者用的不多,偷偷懒可以使用. 因为此方法只需要修改TextBox的Template,而不用重写何任代码. 注意: 1 ...
- 转自:C#中TextBox水印提示的简单实现
本文转自: 原作者: js2854 出处: http://js2854.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接 ...
- WPF自定义控件之水印文本(密码)框
首先来讲讲创建这个控件的初衷,一个让我很郁闷的问题. 公司的客户端项目采用WPF+MVVM技术实现,在近期地推客户端的过程中遇到了一个很奇葩的问题:在登录界面点击密码框就会直接闪退,没有任何提示 密码 ...
- DSAPI+DS控件库 Windows7风格控件演示
效果图 部分代码 DSAPI.Win7特性.任务栏特效.初始化() '这句非常重要,很多对任务栏特性的操作都需要先初始化 DSAPI.Win7特性.设置任务栏窗口缩略图(Me, My.Resource ...
- Atitit 图像处理知识点体系知识图谱 路线图attilax总结 v4 qcb.xlsx
Atitit 图像处理知识点体系知识图谱 路线图attilax总结 v4 qcb.xlsx 分类 图像处理知识点体系 v2 qb24.xlsx 分类 分类 理论知识 图像金字塔 常用底层操作 卷积扫描 ...
- Atitit 图像处理知识点 知识体系 知识图谱v2
Atitit 图像处理知识点 知识体系 知识图谱v2 霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像 ...
- Atitit 图像处理知识点 知识体系 知识图谱
Atitit 图像处理知识点 知识体系 知识图谱 图像处理知识点 图像处理知识点体系 v2 qb24.xlsx 基本知识图像金字塔op膨胀叠加混合变暗识别与检测分类肤色检测other验证码生成 基本 ...
随机推荐
- 关闭iOS的自动更新
Safari打开网址https://oldcat.me/web/NOOTA9.mobileconfig,安装描述文件,就不会自动下载和提示更新最新的iOS了
- javascript 键值对
<script type="text/javascript"> var arr = new Array(); arr['cn'] = '中国'; arr['usa'] ...
- javascript 判断是否是PC还是手机端
function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = new Array("Android" ...
- Centos 6安装python3.5
安装python3.5 安装步骤如下 :1 准备编译环境(环境如果不对的话,可能遇到各种问题,比如wget无法下载https链接的文件) yum groupinstall 'Development T ...
- 浅谈iOS视频播放的N种解决方案
简 注册登录 添加关注 作者 Maru2016.03.22 20:46* 写了4349字,被135人关注,获得了207个喜欢 字数1621 阅读2895 评论43 喜欢159 header ...
- Heapsort 堆排序算法详解(Java实现)
Heapsort (堆排序)是最经典的排序算法之一,在google或者百度中搜一下可以搜到很多非常详细的解析.同样好的排序算法还有quicksort(快速排序)和merge sort(归并排序),选择 ...
- 『GitHub』Git常用命令记录
Commands: git init 把当前目录变成Git可以管理的仓库 随后出现.git目录,这个目录是Git来跟踪管理版本库的git commit -m "change message& ...
- Linux2.6内核--内存管理(1)--分页机制
在内核里分配内存可不像在其他地方分配内存那么容易.造成这种局面的因素很多.从根本上讲,是因为内核本身不能像用户空间那样奢侈的使用内存.内核与用户空间不同,它不具备这种能力,它不支持简单便捷 ...
- 【HDOJ】5063 Operation the Sequence
#include <cstdio> #include <cstring> #include <cstdlib> #define MAXN 100005 #defin ...
- HDU 5514 Frogs (容斥原理)
题目链接 : http://acm.hdu.edu.cn/showproblem.php?pid=5514 题意 : 有m个石子围成一圈, 有n只青蛙从跳石子, 都从0号石子开始, 每只能越过a[i] ...