c#: TextBox添加水印效果(PlaceHolderText)
基于他人代码修改,不闪,以做备忘。
与SendMessage EM_SETCUEBANNER消息相比,它能改变字体绘制颜色,EM_SETCUEBANNER只限定了DimGray颜色,太深
//与SendMessage EM_SETCUEBANNER消息相比,它能改变字体绘制颜色,EM_SETCUEBANNER只限定了DimGray颜色,太深
[ToolboxBitmap(typeof(TextBox))]
public class TextBoxEx : TextBox
{
private const int WM_PAINT = 0xF;
private Color placeHolderColor = Color.Gray;
private string placeHolderText; [DefaultValue("")]
[Localizable(true)]
[Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
public string PlaceHolderText
{
get { return this.placeHolderText; }
set
{
this.placeHolderText = value;
Invalidate();
}
} protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == WM_PAINT)
WmPaint(ref m);
} private void WmPaint(ref Message m)
{
if (!string.IsNullOrEmpty(this.Text) || string.IsNullOrEmpty(this.placeHolderText) || Focused)
return; using (var g = Graphics.FromHwnd(this.Handle))
{
var flag = TextFormatFlags.EndEllipsis;
//它反着来
if (RightToLeft == RightToLeft.Yes)
{
flag |= TextFormatFlags.RightToLeft;
if (TextAlign == HorizontalAlignment.Left)
flag |= TextFormatFlags.Right;
else if (TextAlign == HorizontalAlignment.Right)
flag |= TextFormatFlags.Left;
}
else
{
switch (TextAlign)
{
case HorizontalAlignment.Center:
flag |= TextFormatFlags.HorizontalCenter;
break;
case HorizontalAlignment.Right:
flag |= TextFormatFlags.Right;
break;
default:
break;
}
} var r = this.ClientRectangle;
r.Offset(-, );
TextRenderer.DrawText(
g,
this.placeHolderText,
Font,
r,
this.placeHolderColor,
flag
);
}
}
}
效果如图:
参考资料:
C# WinForm TextBox添加水印效果 - ZCoding - 博客园
c#: TextBox添加水印效果(PlaceHolderText)的更多相关文章
- C# WinForm TextBox添加水印效果
1.新建项目添加WatermarkTextBox类: using System; using System.Collections.Generic; using System.Text; using ...
- WPF文本框密码框添加水印效果
WPF文本框密码框添加水印效果 来源: 阅读:559 时间:2014-12-31 分享: 0 按照惯例,先看下效果 文本框水印 文本框水印相对简单,不需要重写模板,仅仅需要一个VisualBrush ...
- WPF 之 文本框及密码框添加水印效果
1.文本框添加水印效果 文本框水印相对简单,不需要重写模板,仅仅需要一个 VisualBrush 和触发器验证一下Text是否为空即可. <TextBox Name="txtSerac ...
- WPF的TextBox水印效果详解
一种自以为是的方式: 本来只是想简单的做个水印效果,在文本框内容为空的时候提示用户输入,这种需求挺常见.网上一搜 都是丢给你你一大段xaml代码.用c#代码实现我是不倾向了 既然用wpf就得Xaml啊 ...
- Java 图片添加水印效果
package com.xiaowu.drawwater.demo; import java.awt.AlphaComposite; import java.awt.Graphics2D; impor ...
- WPF实现TextBox水印效果
在日常项目中,一个TextBox需要输入用户名,我们通常的做法是先用一个TextBlock来说明,例如下面的截图: 今天将使用另外一种方式来展示,使用水印的方式.请参考下面的代码: <Windo ...
- WPF 文本框添加水印效果
有的时候我们需要为我们的WPF文本框TextBox控件添加一个显示水印的效果来增强用户体验,比如登陆的时候提示输入用户名,输入密码等情形.如下图所示: 这个时候我们除了可以修改TextBox控件的控件 ...
- C# 处理PPT水印(一)——添加水印效果(文字水印、图片水印)
对文档添加水印可以有效声明和保护文档,是保护重要文件的方式之一.在PPT文档中同样也可以设置水印,包括文本水印和图片水印,本文将讲述如何通过Spire.Presentation for .NET来对P ...
- [Xcode 实际操作]九、实用进阶-(16)给图片添加水印效果
目录:[Swift]Xcode实际操作 本文将演示如何截取屏幕画面,并将截取图片,存入系统相册. 在项目文件夹[DemoApp]上点击鼠标右键 ->[New File]创建一个扩展文件-> ...
随机推荐
- List Leaves
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...
- Tomcat中acceptCount,maxConnections、maxThreads的含义及关系
个人对tomcat连接器3个属性maxConnections.maxThreads.acceptCount的理解: 先摘取官网对这3个属性的描述: acceptCount The maximum qu ...
- String 相关
1. 输出结果为 true,"hello" + 1 在编译期间就被优化成了 "hello1",因此在运行期间,变量 a 和变量 b 指向的是同一个对象 Stri ...
- eclipse的常用设置(空间新建后需要的配置)
地址:https://blog.csdn.net/qiaorui_/article/details/78424491 说明: 新下载的eclipse或者新建了一个工作空间,之 ...
- POJ - 3278
题目链接:http://poj.org/problem?id=3278 ac代码: #include <iostream>#include <stdio.h>#include ...
- video.js使用
//引入video.js html <video id="my-player" className="video-js my-player-wrap vjs-big ...
- 201772020113李清华《面向对象程序设计(java)》第九周学习总结
1.实验目的与要求 (1) 掌握java异常处理技术: (2) 了解断言的用法: (3) 了解日志的用途: (4) 掌握程序基础调试技巧: 2.实验内容和步骤 实验1:用命令行与IDE两种环境下编辑调 ...
- C#对象与XMl文件之间的相互转换(转)
本文是对C#中对象与XMl文件之间的相互转换进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 C#提供三种序列化方式,分别为:1.是使用BinaryFormatter进行串行化: 2.使 ...
- cept源代码目录结构详解_知识树(转)
1 简介该代码架构基于版本10.0.5整理,先整理根目录里的代码,再整理出src目录的架构. 2 代码架构2.1 Ceph源码根目录Ceph的根目录下包含了一些文件夹和若干编译.代码格式相关的文件. ...
- 两将军问题、拜占庭将军问题、TCP三路握手过程的联系
2015年初时产生了一个疑问:基于不可靠的通信链路,为什么在两将军问题中永远无法达到共识,而在TCP三路握手中可以? 今天抽出了一些时间进行研究发现,实际上TCP三路握手也不是完全可靠的,只是一个近似 ...