`
king_tt
  • 浏览: 2083614 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

.NET WinForm 文本控件加入水印文字

 
阅读更多

今天突然来了一个这样的需求,需要在C#的编辑框上加入一个Hint水印效果,类似如下图:

image

以前在手机上(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();
}

}

--------------------------------------------------------------------------------------------------------------------------

然后在程序里这样调用即可。实现超简单… (本文章无源码,需要使用直接拷贝如上代码即可)

image

-------------------------------------------------------

另外一直想研究一下Win32API,不知道谁有没有好的资料推荐一下。

做了这么久程序猿对系统的内核还是未入门阶段,真心惭愧!!!

大侠们有资料就推荐一下哦, 3Q

本人从事网站开发,WP/Win8开发。目前想和一些有志向的朋友一同研究

一下WP/Win8这些新事物,一起玩转论坛,一起合作出软件,一起学习,一起赚Money.

有意向者联系QQ:61797528

海内存知己,天涯若比邻

-------------------------------------------------------


作者:Aaron
腾讯QQ:点击这里给我发消息617975284
Email:sy_dingzi@163.com
MSN:sy_dingzi@hotmail.com
出处:http://www.cnblogs.com/qingci/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


分享到:
评论

相关推荐

    C# Winform时间控件(支持选择年月日,时分)

    第一次上传资源,发现居然不能发图。程序(有源码)是自己写的关于Winform 的时间控件,并不是由两个DateTimePicker组成的,而是一个文本框加一个年,...当然还有支持水印的WaterTextBox.cs文本控件。欢迎大家批评指正。

    C# winform典型系统开发模板

     4.2.4 怎样操作RichtextBox控件的选择文本 82  4.2.5 如何获取数据表中字段的描述信息 83  4.3 设计过程 83  4.3.1 获取数据表中字段的中文信息 84  4.3.2 添加数据表的查询条件 86  4.3.3 ...

    C#开发实例大全(基础卷).软件开发技术联盟(带详细书签) PDF 下载

    实例218 使Button控件大小自动适应文本长度 293 实例219 得到鼠标焦点后自动放大的Button按钮 294 实例220 动态创建多个Button控件 295 11.2 TextBox控件应用 296 实例221 制作多行文本框 296 实例222 制作密码...

    WHC第三方控件

    10. 图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 11. 输入法帮助,全角 转换为半角(ImeHelper.cs) 12. Winform提示框 的摘要说明。(MessageUtil.cs) 13. 包含互操作方法调用...

    aspnet公共类cs文件.rar

    图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序中使用...

    c# 公用操作类库源码

    图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序中...

    DotNet通用类库大全

    图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序中...

    C#公共通用类

    图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序中使用...

    C#公共类通用类非常齐全

    图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序中使用...

    C#公共类源代码 带帮助文档

    图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序中...

    WHC.OrderWater.Commons公共类源码_文档[最新整理]

    图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序中...

    WHC.OrderWater.Commons 伍华聪 公共类源码 类库 帮助文档

    图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 输入法帮助,全角 转换为半角(ImeHelper.cs) Winform提示框 的摘要说明。(MessageUtil.cs) 包含互操作方法调用的应用程序中...

    DotNet公用类(超多附文档)

    10.图片对象比较、缩放、缩略图、水印、压缩、转换、编码等操作辅助类(ImageHelper.cs) 11.输入法帮助,全角 转换为半角(ImeHelper.cs) 12.Winform提示框 的摘要说明。(MessageUtil.cs) 13.包含互操作方法调用的...

Global site tag (gtag.js) - Google Analytics