C# Winfrom 自定义控件——带图片的TextBox
效果:
描述:
提醒:
代码:
public partial class MyPicturerTextBox : UserControl{public MyPicturerTextBox(){InitializeComponent();this.BorderStyle = BorderStyle.FixedSingle;}private Image userImg;[Description("文本框里的图片")]public Image UserImg{get { return userImg; }set{if (value != null){this.Img.Image = value;}userImg = value;}}private string txt;[Description("输入的文本")]public string Txt{get { return txt; }set{if (!string.IsNullOrEmpty(value)){this.textBox.Text = value;}txt = value;}}[Description("TextChanged事件")]public event EventHandler MyTextChanged;private void textBox_TextChanged(object sender, EventArgs e){MyTextChanged?.Invoke(sender, e);}/// <summary> /// 获得当前进程,以便重绘控件 /// </summary> /// <param name="hWnd"></param> /// <returns></returns> [System.Runtime.InteropServices.DllImport("user32.dll")]static extern IntPtr GetWindowDC(IntPtr hWnd);[System.Runtime.InteropServices.DllImport("user32.dll")]static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC);protected override void WndProc(ref Message m){base.WndProc(ref m);if (m.Msg == 0xf || m.Msg == 0x133){//拦截系统消息,获得当前控件进程以便重绘。 //一些控件(如TextBox、Button等)是由系统进程绘制,重载OnPaint方法将不起作用. //所有这里并没有使用重载OnPaint方法绘制TextBox边框。 // //MSDN:重写 OnPaint 将禁止修改所有控件的外观。 //那些由 Windows 完成其所有绘图的控件(例如 Textbox)从不调用它们的 OnPaint 方法, //因此将永远不会使用自定义代码。请参见您要修改的特定控件的文档, //查看 OnPaint 方法是否可用。如果某个控件未将 OnPaint 作为成员方法列出, //则您无法通过重写此方法改变其外观。 // //MSDN:要了解可用的 Message.Msg、Message.LParam 和 Message.WParam 值, //请参考位于 MSDN Library 中的 Platform SDK 文档参考。可在 Platform SDK(“Core SDK”一节) //下载中包含的 windows.h 头文件中找到实际常数值,该文件也可在 MSDN 上找到。 IntPtr hDC = GetWindowDC(m.HWnd);if (hDC.ToInt32() == 0){return;}//只有在边框样式为FixedSingle时自定义边框样式才有效 if (this.BorderStyle == BorderStyle.FixedSingle){//边框Width为1个像素 System.Drawing.Pen pen = new Pen(Brushes.DarkRed, 1);//绘制边框 System.Drawing.Graphics g = Graphics.FromHdc(hDC);g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;g.DrawRectangle(pen, 0, 0, this.Width - 1, this.Height - 1);pen.Dispose();}//返回结果 m.Result = IntPtr.Zero;//释放 ReleaseDC(m.HWnd, hDC);}}protected override void OnResize(EventArgs e){base.OnResize(e);this.Refresh();}}
不足之处:
转载于:https://www.cnblogs.com/HelloQLQ/p/11298308.html
C# Winfrom 自定义控件——带图片的TextBox相关推荐
- axure中怎么把图片变圆_orcad中怎么创建带图片的Title Block?
一般来说,Title Block都是调用系统本身自带的,或者是修改自带的文件,所以这里我们直接复制一个系统自带的Title Block,修改后保存在路径下,进行关联即可. 第一步,从系统自带的模板Ca ...
- xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页,解决内容断开的问题
xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页,解决内容断开的问题 参考文章: (1)xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页 ...
- wangEditor - 轻量级web富文本编辑器(可带图片上传)
业务需求: 通过后台编辑文章和图片,上传到前端界面,展示新闻消息模块.这个时候,需要一款简洁的编辑器,百度编辑器是最常用的一种,但是功能太过于复杂,而wangEditor - 轻量级web富文本编辑器 ...
- 自定义Android带图片的按钮
自定义Android带图片的按钮 前言 现在移动设备的按钮设计讲究大图标小文字,希望用户只要一看到图标便能知道这个按钮是干嘛的,但又要有必要的文字提示,最常见的就数搜索按钮了,上面一个大大的放大镜图标 ...
- 仿快图系统自带图片浏览器应用源码项目
仿快图系统自带图片浏览器应用源码,最近在做一个微博i动态模块,需要查看他人相册照片或者微博内容图片等.看到QQ空间那个效果不错,尝试了不少方法来实现,均不是怎么理想.最初是想通过自定义GroupVie ...
- 小程序提交表单mysql_GitHub - kun19911227/minipro: 微信小程序提交带图片的表单
minipro 微信小程序提交带图片的表单 目录说明 upload_images ├── pages │ ├── upload_info 提交表单 │ └── display_info 信息展示 ├─ ...
- xslt三种带图片的超链接(a标签,img标签)写法
来源:http://www.notsee.info/tech/XSLT/XSLT-detail-333.xml 第一种带图片的超链接写法 xml <notsee ID="a002& ...
- 用VB实现带图片的XP风格的按钮控件
虽然在VB里实现XP风格很简单,但是要使用XP风格同时又让按钮显示图片,则实现起来要麻烦一些,为此,我写了一个控件来实现前述功能,同时让读者可以从中了解XP主题界面的绘制过程. 使用办法很简单,在VB ...
- 用VSCode打开带图片的.md文件
最近自学python发现一个特别好的教程,里面文档都是.md文件并且带图片的,我用sublime,UE等都能打开 不能显示图片,所以就找到用VSCode打开. 把大象放进冰箱分三步,打开带图片的.md ...
最新文章
- JavaScript初学者编程题(20)
- 清空SQL Server数据库中所有表数据的方法(转)
- CodeForces - 603C Lieges of Legendre(博弈+找规律)
- 前端常见的安全性问题有哪些?
- 说说那些死于决斗的大牛
- dbcp 连接都会被断开_科普帖:软件与数据库连接的机制是怎样的?
- Oracle P6培训系列:03设置用户设置
- 基于Easyui框架的datagrid绑定数据,新增,修改,删除方法(一)
- 超强合集:OCR 文本检测干货汇总(含论文、源码、demo 等资源)
- linux可执行文件在window,教你如何在windows下编译linux生成windows的可执行程序
- cs服务器网页管理端,sXe服务器端怎么管理
- 计算机中算术逻辑单元负责,算术逻辑单元可实现 算术逻辑单元的发展
- 数学分析教程(科大)——1.7笔记+习题
- Kaggle无法出现人机验证的解决办法
- 数据库访问函数FIND_IN_SET介绍
- 2022商业武器:一站式供应链中台成为决胜关键
- python色卡_python matplotlib:plt.scatter() 大小和颜色参数详解
- 实例3:爬取斗破苍穹小说全文
- ssd 分区4k对齐 linux,Debian SSD ext4 4K对齐
- 计算机视觉中,目前有哪些经典的目标跟踪算法