具有透明背景的TextBox
我想做textBox一个透明背景c#.net如果定义属性,Visual Studio会出错
把它放在构造函数中:
SetStyle(ControlStyles.SupportsTransparentBackColor, true);
该类需要启用透明样式。 (由于某种原因,默认情况下不支持)。
public class MyControl : System.Windows.Forms.UserControl { public MyControl () { // Create visual controls InitializeComponent(); SetStyle(ControlStyles.SupportsTransparentBackColor, true); } }
或者,如果它不是自定义控件:
mycontrolObject.SetStyle(ControlStyles.SupportsTransparentBackColor, true);
有关Control.SetStyle方法的更多信息
其他控制风格
这不是一件容易的事。 .Net TextBox控件是Win32 Edit控件的包装器,因此您需要进行子类化以实现背景透明度。
看一下这个示例: AlphaBlendTextBox – .NET的透明/半透明文本框
我找到了解决这个问题的方法,我自己就是这个问题。 我在这里读到的大部分内容都是正确的。 对于某些环境来说,“àla” AlphaBlendTextBox
的方法过于复杂或过于耗时,而这些环境已经很费劲。
假设您有一个给定的背景颜色和给定的图片或您希望通过RichTextBox
控件看到的任何内容。 这就是我所做的(总结):
- 在主窗体上,您可以使用正确的背景颜色和/或图片放置图片,文本,按钮或其他任何投影
- 创建一个新表单并在适当的位置定位它
- 将此新表单
TransparencyKey
设置为SystemColors.InactiveBorder
- 处理这个表单边框属性(
FormBorderStyle
到FormBorderStyle.None
;ControlBox
,MinimizeBox
,MaximizeBox
和ShowIcon
为false
,TopMost
为true
,StartPosition
为FormStartPosition.Manual
,SizeGripStyle
为SizeGripStyle.Hide
),因此没有可见的表单结构 - 创建一个
RichTextBox
,其大小与表单大小相同,位于其左上角 - 将此框
BackColor
设置为SystemColors.InactiveBorder
(还记得TransparencyKey吗?),将BorderStyle
为None - 处理文本框内容:颜色,字体和字符串
- 将此表单可见性与您需要的任何内容同步,并且……瞧! 您可以通过在文本框中编写和编辑的任何内容来查看应用程序背景!
我不能假装这种方法适合所有人,但它比我见过的其他方式更简单,只要我能保持这种方式,我更喜欢更简单的解决方案。
当然,当你关闭主表格时,你必须照顾孩子表格,但这对你来说非常基本,不是吗?
请享用!