C#WinForm中支持透明的TextBox控件
WinForm 的 TextBox不支持透明背景色,设置背景色透明会报错:“控件不支持透明的背景色”。
this.textBox1.BackColor = Color.Transparent;
解决方法一:(测试可用)
public class TransTextBox : RichTextBox
{
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
static extern IntPtr LoadLibrary(string lpFileName);
protected override CreateParams CreateParams
{
get
{
CreateParams prams = base.CreateParams;
if (LoadLibrary("msftedit.dll") != IntPtr.Zero)
{
prams.ExStyle |= 0x020; // transparent
prams.ClassName = "RICHEDIT50W";// TRANSTEXTBOXW
}
return prams;
}
}
}
因为是派生自RichTextBox,所以若想仿照TextBox,还需要在派生控件的构造函数中设置:
this.Multiline = false;
×另,此方法有个可能出现的问题,若此控件下存在背景图片容器(如:PictureBox),会发现输入后再删除时文字会残留:
目前我是通过给此派生控件添加事件函数来刷新界面解决的,如果有更好的方法,欢迎告诉我:
this.TextChanged += new System.EventHandler(this.TransTextBox_TextChanged);
this.LostFocus += new EventHandler(this.TransTextBox_LostFocus);
private void TransTextBox_LostFocus(object sender, EventArgs e)
{
this.Parent.Refresh();
}
private void TransTextBox_TextChanged(object sender, EventArgs e)
{
this.Parent.Refresh();
}
解决方法二:(测试不可用)
class TransTextBox : TextBox
{
public TransTextBox() : base()
{
this.SetStyle(ControlStyles.SupportsTransparentBackColor | ControlStyles.UserPaint, true);
base.BackColor = System.Drawing.Color.Transparent;
this.UpdateStyles();
}
}
如果此方法我使用方式有什么问题,请告诉我~
————————————————
版权声明:本文为CSDN博主「猫殷瞳」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/azuredrop/article/details/46662187
C#WinForm中支持透明的TextBox控件的更多相关文章
- Winform中使用DevExpress时给控件添加子控件的方法
场景 在WInform中使用DevExpress时经常使用PanelControl控件用来进行布局设计,因此需要在代码中生成控件并添加子控件. 实现 一种是设置要添加的自控件的Parent属性为容器控 ...
- Winform中使用DevExpress的CheckEdit控件实现多选条件搜索
场景 Winform控件-DevExpress18下载安装注册以及在VS中使用: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/1 ...
- (转)C# WinForm中 获得当前鼠标所在控件 或 将窗体中鼠标所在控件名显示在窗体标题上
原文地址:http://www.cnblogs.com/08shiyan/archive/2011/04/14/2015758.html /********************** * 课题:将窗 ...
- Winform 中DataGridView、dev Gridview控件添加行标题
有很多种方法. 1.可以在DataGridView控件中的RowStateChanged事件改变行标题单元格的值(Row.HeaderCell.Value) /// <summary> / ...
- Winform中TextBox控件开启自动提示补全功能
问题:Winform开发中,有一个TextBox控件用以输入姓名,现希望在输入名字时能够自动提示所有可能的名字. 解答:winform中的TextBox控件含有如下三个属性: ① AutoComp ...
- c# winform 在一个窗体中使用另一个窗体中TextBox控件的值——解决办法
[前提]一个winform应用程序项目中,窗体B,需要使用 窗体A 中一个TextBox控件的值,进行计算等操作. [解决方案] 1.在窗体A中定义:public static double a;// ...
- [转载]ASP.NET中TextBox控件设立ReadOnly="true"后台取不到值
原文地址:http://www.cnblogs.com/yxyht/archive/2013/03/02/2939883.html ASP.NET中TextBox控件设置ReadOnly=" ...
- ASP.NET中TextBox控件设立ReadOnly="true"后台取不到值
SP.NET中TextBox控件设置ReadOnly="true"H或Enabled=false后台取不到值 当TextBox设置了ReadOnly="true" ...
- winform学习(7)Label控件、Button控件、TextBox控件
Label控件是System.Windows.Forms.Label 类提供的控件. 作用:主要用来提供其他控件的描述文字,例如:登录窗体上的用户名.密码(输入框前面的字) Button控件是Syst ...
- C#中设置TextBox控件中仅可以输入数字且设置上限
首先设置只可以输入数字: 首先设置TextBox控件的KeyPress事件:当用户按下的键盘的键不在数字位的话,就禁止输入 private void textBox1_KeyPress(object ...
随机推荐
- 如何彻底的卸载mysql
在Windows系统下面改如何彻底的卸载我们的mysql服务呢. 1.首先我们先停止mysql服务:net stop mysql 然后在控制面板里面找到我们的mysql,然后给他卸载掉.然后在之前安装 ...
- 从 DeepSeek 突然爆发,看数据开发的应用市场
在数字化快速发展的当下,人工智能与数据技术不断迭代.近期,DeepSeek 凭借自身技术实力在市场中迅速崛起,为剖析数据开发应用市场提供了视角. DeepSeek 爆发:技术与市场的双重驱动 1.1 ...
- ET5.0-添加心跳功能
ET5.0 demo中添加心跳功能 一.服务端 1:添加文件夹,在Model/Module文件夹下新建文件夹 Hearbeat 2:添加心跳配置文件 SessionHeartbeatCompone ...
- CF958E1 题解
Problem 原题链接 Meaning 在二维平面内,有位置不同且不存在三点共线的 \(R\) 个红点和 \(B\) 个黑点,判断是否能用一些互不相交的线段连接每一个点,使得每条线段的两端都分别是黑 ...
- 群晖Synology NAS即DSM系统7.2去掉@eaDir文件夹并禁止其生成
原文永久链接:https://forum.piwind.com/d/28-qun-hui-synology-nasji-dsmxi-tong-72qu-diao-at-eadirwen-jian-ji ...
- kafka+springboot入门
前言 使用工具:kafka_2.12-3.1.0.tgz 测试项目:spring cloud 测试系统:windows10 安装kafka 下载解压kafka,先启动zookeeper,启动命令为: ...
- 前端开发系列085-Node篇之global
本文介绍Node中的全局对象,包括global本身以及控制台输出对象Console.require函数.定时器相关方法以及\_\_filename和\_\_dirname等全局变量. 一.global ...
- JavaScript 异步编程指南:async/await 与 Promise 该怎么选?
在 JavaScript 开发中,异步操作就像家常便饭 -- 从调用后端 API 到读取本地文件,几乎无处不在.但很多开发者都会困惑:到底该用 Promise 的链式调用,还是 async/await ...
- qt 中 使用 opengl 上下文 (context) 相关的注意事项
qt 中 使用 opengl 相关的注意事项 本人移植了一个glut到qt的项目,前期没有注意相关的上下文的使用,导致相关的显示混乱. 解决方案 makeCurrent();在每一个类函数中加上这一句 ...
- SciTech-Mathmatics-Analysis:分析: “升维”研究 之 数学家发明"参数方程": 将坐标方程 $\large x^2 + y^2 = 1$ 转化为 $\large x =sin(t) \ and \ y=cos(t) $
SciTech-Mathmatics-Analysis:分析: 参数方程 将坐标方程 \(\large x^2 + y^2 = 1\) 转化为 $\large x =sin(t) \ and \ y= ...