今天突然来了一个这样的需求,需要在C#的编辑框上加入一个Hint水印效果,类似如下图:
以前在手机上(wp)上做过类似的效果。参考silverlight toolkit 的searchTextBox。现在要在winform下制作,开始我还以为应该有啥啥属性可以一键搞定,结果目测了一下,没有什么属性,于是乎百度了一下,网上说用win32API来做,这倒挺神奇的,参考别人做了如下列子。
申明一个Win32Utility类,静态的,
代码如下
--------------------------------------------------------------------------------------------------------------------------
public static class Win32Utility
{
[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, 0, text);
}
else
{
SendMessage(control.Handle, EM_SETCUEBANNER, 0, 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, 0, builder);
}
else
{
SendMessage(control.Handle, EM_GETCUEBANNER, 0, builder);
}
return builder.ToString();
}
}
--------------------------------------------------------------------------------------------------------------------------
然后在程序里这样调用即可。实现超简单… (本文章无源码,需要使用直接拷贝如上代码即可)
-------------------------------------------------------
另外一直想研究一下Win32API,不知道谁有没有好的资料推荐一下。
做了这么久程序猿对系统的内核还是未入门阶段,真心惭愧!!!
大侠们有资料就推荐一下哦, 3Q
本人从事网站开发,WP/Win8开发。目前想和一些有志向的朋友一同研究
一下WP/Win8这些新事物,一起玩转论坛,一起合作出软件,一起学习,一起赚Money.
有意向者联系QQ:61797528
海内存知己,天涯若比邻!
-------------------------------------------------------
相关推荐
第一次上传资源,发现居然不能发图。程序(有源码)是自己写的关于Winform 的时间控件,并不是由两个DateTimePicker组成的,而是一个文本框加一个年,...当然还有支持水印的WaterTextBox.cs文本控件。欢迎大家批评指正。
4.2.4 怎样操作RichtextBox控件的选择文本 82 4.2.5 如何获取数据表中字段的描述信息 83 4.3 设计过程 83 4.3.1 获取数据表中字段的中文信息 84 4.3.2 添加数据表的查询条件 86 4.3.3 ...
实例218 使Button控件大小自动适应文本长度 293 实例219 得到鼠标焦点后自动放大的Button按钮 294 实例220 动态创建多个Button控件 295 11.2 TextBox控件应用 296 实例221 制作多行文本框 296 实例222 制作密码...
10. 图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 11. 输入法帮助,全角 转换为半角(ImeHelper.cs) 12. Winform提示框 的摘要说明。(MessageUtil.cs) 13. 包含互操作方法调用...
图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序中使用...
图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序中...
图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序中...
图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序中使用...
图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序中使用...
图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序中...
图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序中...
图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序中...
10.图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 11.输入法帮助,全角 转换为半角(ImeHelper.cs) 12.Winform提示框 的摘要说明。(MessageUtil.cs) 13.包含互操作方法调用的...