具有透明背景的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控件看到的任何内容。 这就是我所做的(总结):

  1. 在主窗体上,您可以使用正确的背景颜色和/或图片放置图片,文本,按钮或其他任何投影
  2. 创建一个新表单并在适当的位置定位它
  3. 将此新表单TransparencyKey设置为SystemColors.InactiveBorder
  4. 处理这个表单边框属性( FormBorderStyleFormBorderStyle.None ; ControlBoxMinimizeBoxMaximizeBoxShowIconfalseTopMosttrueStartPositionFormStartPosition.ManualSizeGripStyleSizeGripStyle.Hide ),因此没有可见的表单结构
  5. 创建一个RichTextBox ,其大小与表单大小相同,位于其左上角
  6. 将此框BackColor设置为SystemColors.InactiveBorder (还记得TransparencyKey吗?),将BorderStyle为None
  7. 处理文本框内容:颜色,字体和字符串
  8. 将此表单可见性与您需要的任何内容同步,并且……瞧! 您可以通过在文本框中编写和编辑的任何内容来查看应用程序背景!

我不能假装这种方法适合所有人,但它比我见过的其他方式更简单,只要我能保持这种方式,我更喜欢更简单的解决方案。

当然,当你关闭主表格时,你必须照顾孩子表格,但这对你来说非常基本,不是吗?

请享用!